我正在比较这两个工具。我的印象是:
你同意这种特征吗?还有什么其他差异? WIX#如何改变这个故事?由于Inno Setup不使用Windows安装程序,卸载有困难吗?根据命令,Inno Setup可以将安装降级到早期版本 - 还是只能安装/升级应用程序?
答案 0 :(得分:44)
自从我与MSI合作已经很长时间了,当我切换到InnoSetup时,我从未回头。
我不想让我的装置成为头痛的问题。我需要一些能够“设置并忘记它”的东西
默认情况下,InnoSetup会生成卸载。 它可以处理简单或复杂的安装和卸载需求。
使用InnoSetup您可以通过几种不同的方式升级应用程序。
使用InnoSetup降级通常是卸载并重新安装旧版本。
答案 1 :(得分:31)
答案 2 :(得分:7)
我迟到了回应这个帖子。我多年来一直使用Inno Setup为我公司的产品。它做得非常好,但对我来说最大的障碍是自定义操作。在Inno Setup中,必须使用Pascal语言的变体。使用WiX工具集,我可以并且确实使用C#进行自定义操作,这对我来说更加舒适。不可否认,这是个人偏好,但这是我从一个优秀的Inno Setup平台切换到一个优秀的WiX平台的主要原因。这一点,以及使用MSI带来如此多好处的事实已经在另一个回复中提到过。
坦率地说,对我来说,使用本书 WiX 3.6:Windows Installer XML开发人员指南,Pascal的学习曲线大于WiX的学习曲线。
答案 3 :(得分:3)
我们将两者集成到构建系统中。
但我们决定只为一个简单的原因推销非商业客户和msi的innosetup exe文件。
您无法使用MSI发布多本地化版本的安装程序。每种语言都需要一个安装程序,这非常糟糕。可能有一些重度黑客攻击允许你重写整个GUI,但这没有很好的文档记录,没有开源窃取和大量的工作。
GUI实际上是WiX的最差部分,否则在技术上优于Innosetup。
使用Innosetup,可以轻松地以5种语言发送一个exe。我们已经有6个二进制文件[免费,家庭版,专业版 - 每个32/64位]所以变种爆炸将是巨大的,如果你推销带有日文网页的日文版,并且首先出现的是英文版的安装,它是给人留下不好的印象。
需要群组政策等的商业用户的MSI仅限英语,对商业用户来说很好。
答案 4 :(得分:2)
我知道这个答案来得太晚了。但是我碰到了这篇文章,并想出这个问题的一个答案可能就是:“为什么没有两个?” (吃蛋糕,也要吃蛋糕),还有“为什么当我只花一个钱就能花第二个钱免费地花钱时,为什么还要花时间去实施这两个呢?”
为此,我提出了一个带有MSI支持的Inno Setup脚本:
https://github.com/cubiclesoft/php-app-server/blob/master/installers/win-innosetup/yourapp.iss
此处使用了一些自定义Pascal函数,这些函数在命令行中通过/MSI={GUID}
传递时触发,从而触发了脚本的有用更改(例如,“开始”或“添加/删除程序”中没有“卸载”图标)。
我介绍了支持上述Inno Setup脚本的WiX脚本:
https://github.com/cubiclesoft/php-app-server/blob/master/installers/win-wix/yourapp.wxs
WiX脚本以触发Inno Setup脚本以更兼容MSI的方式执行事情并启动MSI的方式包装基于Inno Setup的安装程序EXE(唯一的负载)。它不是完美的,但是它可以让您以Inno Setup的方式处理事情,然后获得MSI的大部分好处(例如GPO / SCCM / DSC静默部署)而无需花费很多时间,从而节省了大量时间。如果大多数情况下只是将文件部署到系统和少量注册表项(即基本应用程序),则这是最好的方法。对于具有大量组件的大型应用程序,我不建议采用这种方法,但是如果您尝试使用并且可以使用,请告诉我!具有启动Inno Setup EXE的MSI版本至少可以使系统管理员进行合理的部署。
请注意,WiX脚本取决于Inno Setup方面的自定义Pascal功能。您不能只使用任何Inno Setup安装程序并用WiX脚本包装它并期望它能工作(可能不会)。但是也许将来的Inno Setup版本会在本机上支持类似的功能。