将 NSIS 脚本构建为 MSI 包
有没有办法将 Nullsoft 安装程序脚本 (NSI) 安装程序编译为 MSI 包而不是 EXE?
Is there any way to compile the Nullsoft Installer Script (NSI) setup as a MSI package instead of an EXE?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不幸的是,不行。
NSIS 允许您创建可编写脚本的程序化安装包。它简单、易于使用,并且具有 Windows Installer 中没有的许多功能。
Windows Installer (MSI) 创建数据库驱动的事务性安装包。如果正确编写,Windows Installer 程序包非常强大,即使文件损坏/删除,它也会自动重新安装。 Windows Installer 能够识别 UAC,并且仅在需要时提升,基本上,如果您正在为企业市场创建软件,则需要提供 MSI。
请参阅Windows Installer 权威指南,了解有关了解 MSI 的详细介绍。
Unfortunately, No.
NSIS lets you create scriptable, procedural installation packages. It's simple, easy to use and has a number of features not present in Windows Installer.
Windows Installer (MSI) creates database driven, transactional installation packages. When written properly a Windows Installer package is very robust, a file gets corrupted/deleted and it will be automatically reinstalled. Windows Installer is aware of UAC and only elevates when required, basically if you're creating software for the corporate market, you will need to provide an MSI.
Check out The Definitive Guide to Windows Installer for a good introduction to understanding MSI.
可以使用 MSI Wrapper 将 NSIS 安装程序包装在 MSI 文件中。它是我为包装 NSIS 和 Inno Setup 安装程序而制作的一个小工具。它使用 WiX 来编译 MSI,但有一个 GUI 可以帮助您而不是 XML 文件。
它的诞生是因为我需要一个基于传统 EXE 安装程序创建 MSI 文件的工具。我需要卸载和升级支持,并且只希望打包的安装程序在控制面板的“添加/删除程序”中显示一次。
我还希望能够在安装 MSI 时将命令行参数传递给打包的安装程序。
如果您想使用它或帮助我改进它,您可以在 http://www.exemsi.com 找到它。
我同意将可执行安装程序包装在 MSI 包中并不是理想的解决方案。然而,当你已经有了 exe 时,它就很有意义了:-)
NSIS installers can be wrapped in MSI files using the MSI Wrapper. It is a small tool that I made for wrapping NSIS and Inno Setup installers. It uses WiX to compile the MSI but there is a GUI to help you instead of an XML file.
It was made because I needed a tool for creating MSI files based on traditional EXE installers. I needed support for uninstall and upgrades and only wanted the wrapped installers to show up once in the Add/Remove programs in the control panel.
I also wanted to be able to pass command line parameters to the wrapped installer when the MSI is installed.
If you want to use it or help me improve it, you can find it at http://www.exemsi.com.
I share the opinion that wrapping an executable installer in an MSI package is not the ideal solution. However, when you already have the exe it can make a lot of sense :-)
否(并且没有计划支持 .MSI 输出),请尝试 WIX
No (And there are no plans to support .MSI output), try WIX