让我们讨论以下主题。目前正在部署的应用程序有很好的知道xcopy方法。这种方法很难管理依赖项,文件更新等。有一些软件包的帮助下启动应用程序部署的想法,你知道你在Linux的帮助下RPM,但适用于Windows。
所以我有疑问:在Windows经典Windows安装程序( msi )或 nuget 或其他方面,最好使用哪种软件包系统?
答案 0 :(得分:25)
MSI 是公认的企业应用程序标准。与传统部署相比,它具有some major corporate benefits(
and the short, concise version
) 技术。 WiX 是创建MSI文件的新开源方式。
- Wix Toolset Download(
1)
主WiX设置,2)
Visual Studio集成设置)- WiX Documentation
- 安装WiX后,在安装文件夹"
WiX.chm
"中找到msi.chm
和%ProgramFiles(x86)%\WiX Toolset v3.11\doc
帮助文件。快速访问文档。- 在线:
WiX Reference Manual v3
,Official WiX Tutorial
。Github
,Bug Tracker
,Mailing List
,FireGiant WiX KDB
(FireGiant是WiX的商业分支机构)。- 要了解 Wix ,您可能需要阅读quick, unofficial summary of the history behind it。
其他工具 :
- 然后你可能想要检查其他方式来提供安装程序,除了Wix,阅读: What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc (one more quick-list of tools)。
Hello World&您好WiX:
- 最后查看一个完整示例,了解Wix源文件及其组件在Codeproject上的外观。这是"你好 Wix的世界" 。
- "Hello WiX - step-by-step in Visual Studio"。
- 这需要 WiX 和 Votive (WiX工具集Visual Studio扩展 - WiX的Visual Studio集成,因此您可以获得Intellisense)。 See download page。
- 底部标记中的内联注释可能就是您需要的所有内容。
- Small sample of WiX preprocessor variables / defines。
更多示例代码:
WiX快速入门 :以下是我为WiX找到的一些最佳示例代码链接:
- Helge Klein's real-world WiX sample - 请查看此内容。
- Rainer Stropek's WiX Samples on Github - 非常有帮助。
- From MSI to WiX by Alex Schevchuk - 老化的内容,但很棒。
- Chris Painter's IsWiX Tutorials - 出色的WiX样本。
最后:
- Phil Wilson的MSI样本的Github存储库:https://github.com/Apress/def-guide-to-win-installer。最好的内容,但老化。一般的MSI样本,而不是WiX样本。
- 我的实验网站:installdude.com。
学习Wix的一些很好的起点链接:
从Setup.exe
WiX Bundle或从MSI文件本身提取文件:
dark.exe
工具正如我在我建议的那样写的" Wix快速入门"上面的帖子: Wix是亲自动手。 只关注简单但完整的真实样本,例如来自Codeproject的样本 - 单独阅读文档可能只会让人感到困惑。
专注于将应用程序拆分为组件并设置主要升级。 每个组件使用一个文件作为经验法则,并阅读此答案以更好地了解组件创建: Change my component GUID in wix?
主要升级是部署软件最常用的升级机制(另一种常见升级类型是次要升级)。显然,升级已部署的内容显然至关重要。在部署第一个软件版本之前获得升级方案,以便您对部署解决方案充满信心。
一旦设置了组件并且升级解决方案正常运行,其余部分就会在您完成应用程序的部署要求时完成,并检查 Wix教程中的示例网站:https://www.firegiant.com/wix/tutorial/。
对于那些直接编写Wix代码(没有GUI编辑器)的人,我建议您查看这个答案,以便保持源文件的简洁: Syntax for guids in WIX?
进一步阅读:
答案 1 :(得分:3)
我现在沿着这条路走下去,我已经使用MSI / WiX为安装程序继承了软件,但是我们希望将我们的流程转换为持续交付,并推出在没有客户端交互的情况下安装的更新。我认为它不适合作为SDK工具的pigeon hole nuget,从本质上讲它是一个部署版本化文件集的工具。此外,如果您正在部署的软件已经在nuget上大量回复,并且您已经将组件打包成nuget软件包以供内部使用,那么为什么要在组合中添加额外的技术呢?在你的msi中打包nuget.exe,定期调用它上的更新,完成。
我知道WiX支持创建补丁,但它似乎是事后的想法。此外,如果您的补丁安装失败会发生什么?不按顺序安装补丁?您的主安装程序需要UAC权限,而您的修补程序不需要吗?
我认为时代在变,MSI代表了一种较旧的思考方式。 Chocolatey就是一个很好的例子,但它仍处于混合阶段,混合了两种技术。
MSI更像是拉 - 你得到一个包,然后安装它。 Nuget更像是一个推送狂潮 - 你得到一个包的名称,安装它,然后定期你可以调用更新,并下载并安装一个新版本。