有没有什么办法可以将Nullsoft安装程序脚本(NSI)设置编译为MSI包而不是EXE?构建NSIS脚本作为MSI包
回答
不幸的是,第
NSIS可以让你创建脚本化,程序安装包。它非常简单,易于使用,并且具有许多Windows安装程序中不存在的功能。
Windows Installer(MSI)创建数据库驱动的事务安装包。正确编写Windows Installer软件包非常健壮时,文件会被损坏/删除,并且会自动重新安装。 Windows安装程序知道UAC,只有在需要时才升级,基本上,如果您要为企业市场创建软件,则需要提供MSI。
查看The Definitive Guide to Windows Installer了解MSI的一个很好的介绍。
NSIS安装程序可以使用MSI Wrapper封装在MSI文件中。这是我用来包装NSIS和Inno Setup安装程序的一个小工具。它使用WiX来编译MSI,但是有一个GUI来帮助你而不是XML文件。
这是因为我需要一个基于传统EXE安装程序创建MSI文件的工具。我需要支持卸载和升级,只希望封装的安装程序在控制面板的“添加/删除程序”中显示一次。
我也希望能够在安装MSI时将命令行参数传递给封装的安装程序。
如果你想使用它或帮助我改进它,你可以在http://www.exemsi.com找到它。
我同意将可执行安装程序包装到MSI软件包中并不是理想的解决方案。然而,当你已经有exe文件时,它可以产生很大的意义:-)
圣洁的废话!这应该内置于NSIS!现在给它一个尝试。 – BrainSlugs83 2013-01-21 07:11:36
神圣的废话是对这种模式的很好的描述。它根本没有意义......对不起。 – 2013-07-21 20:15:02
- 1. 创建NSIS包作为构建的一部分
- 2. MSI包的预安装脚本
- 3. 部署:MSI软件包vs脚本
- 4. 使用RCurl包构建脚本
- 5. 从脚本中“构建部署包”VS2010
- 6. 使用powershell脚本创建msi
- 7. .msi作为文本下载
- 8. 如何为构建构建构建脚本
- 9. NSIS中的卸载脚本
- 10. 查找来自NSIS脚本
- 11. Eclipse构建脚本
- 12. Maven-构建脚本
- 13. Ant构建脚本
- 14. 如何通过NANT脚本为数据库创建MSI
- 15. 生成MSI作为TFS构建的一部分
- 16. 脚本安装MSI默默
- 17. 脚本MSIUSEREALADMINDETECTION添加到MSI
- 18. 在Azure上构建MSI
- 19. 为构建脚本解析xcodebuild -showsdks
- 20. 每晚为SubVersion构建脚本
- 21. html5boilplate + ant构建脚本+咖啡脚本
- 22. 为Dacpac和Powershell脚本创建Nuget包
- 23. 如何从NSIS脚本制作prunsvr工作
- 24. 如何让NSIS在msi上等待?
- 25. 运行一个python脚本作为cmake构建的一部分
- 26. 构建:使用“包”作为入口点?
- 27. 包含构建输出作为附件
- 28. NSIS:创建不起作用
- 29. 构建网站部署包作为后构建事件
- 30. 构建脚本 - 怎么做
此外:MSI存在很多问题 - 您需要举一个例子,为x86和x64创建单独的安装程序(其中一个例子:MSI可以总是提升或永不提升 - 它不能同时实现) - 我想象这些限制在NSIS中不存在。 – BrainSlugs83 2013-01-20 10:52:39
@ 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
另一个好处是利用NSIS内部的MSI包装。这对于IT部门将Windows Installer服务设置为禁用(或手动)时非常有用。你可以让你的NSIS安装程序检查这个,启用该服务,然后提取并执行你的MSI。 无论它是一个很好的写法,@saschabeaumont – Damian 2014-11-03 21:45:29