2009-12-07 57 views

回答

25

不幸的是,第

NSIS可以让你创建脚本化,程序安装包。它非常简单,易于使用,并且具有许多Windows安装程序中不存在的功能。

Windows Installer(MSI)创建数据库驱动的事务安装包。正确编写Windows Installer软件包非常健壮时,文件会被损坏/删除,并且会自动重新安装。 Windows安装程序知道UAC,只有在需要时才升级,基本上,如果您要为企业市场创建软件,则需要提供MSI。

查看The Definitive Guide to Windows Installer了解MSI的一个很好的介绍。

+0

此外:MSI存在很多问题 - 您需要举一个例子,为x86和x64创建单独的安装程序(其中一个例子:MSI可以总是提升或永不提升 - 它不能同时实现) - 我想象这些限制在NSIS中不存在。 – BrainSlugs83 2013-01-20 10:52:39

+1

@ BrainSlugs83请参阅MSI系列中的UAC。如果你写得正确,没有限制:) http://blogs.msdn.com/b/rflaming/archive/2006/10/01/uac-in-msi-notes-how-to-build-packages-that -work-for-both-standard-user-and-per-machine.aspx – saschabeaumont 2013-01-25 09:44:19

+0

另一个好处是利用NSIS内部的MSI包装。这对于IT部门将Windows Installer服务设置为禁用(或手动)时非常有用。你可以让你的NSIS安装程序检查这个,启用该服务,然后提取并执行你的MSI。 无论它是一个很好的写法,@saschabeaumont – Damian 2014-11-03 21:45:29

12

无(有没有计划支持.MSI输出),尝试WIX

+3

很高兴把'WiX'放在那里作为替代:) – 2012-11-02 16:07:18

16

NSIS安装程序可以使用MSI Wrapper封装在MSI文件中。这是我用来包装NSIS和Inno Setup安装程序的一个小工具。它使用WiX来编译MSI,但是有一个GUI来帮助你而不是XML文件。

这是因为我需要一个基于传统EXE安装程序创建MSI文件的工具。我需要支持卸载和升级,只希望封装的安装程序在控制面板的“添加/删除程序”中显示一次。

我也希望能够在安装MSI时将命令行参数传递给封装的安装程序。

如果你想使用它或帮助我改进它,你可以在http://www.exemsi.com找到它。

我同意将可执行安装程序包装到MSI软件包中并不是理想的解决方案。然而,当你已经有exe文件时,它可以产生很大的意义:-)

+0

圣洁的废话!这应该内置于NSIS!现在给它一个尝试。 – BrainSlugs83 2013-01-21 07:11:36

+2

神圣的废话是对这种模式的很好的描述。它根本没有意义......对不起。 – 2013-07-21 20:15:02