【发布时间】:2012-03-10 15:38:36
【问题描述】:
我一直在 Visual Studio 2010 中使用 InstallShield LE,但它受到很大限制,有时还存在错误。我查看了付费的 InstallShield 版本,但对于这个价格标签,这些版本也有太多限制。
所以我决定改用 WiX。几年前我有过一些经验。使用 SharpDevelop 和 WiX 工具构建一个简单的安装程序非常容易。
现在我正在尝试为 WiX 收集解决方案和工具。基本上,我需要获得以下功能(由我的客户要求):
当我启动安装程序时,它应该检查服务器上的一个文本文件,看看是否有更新的版本可用。如果是这种情况,那么安装程序应该能够下载更新的安装程序包并启动它(WiX 中是否有任何下载实用程序?)
解决依赖关系。我的应用程序的主要依赖项是 .NET 4(它本身依赖于 Windows Installer 3)。安装程序应该让用户自动下载和安装它们
记录安装过程,同时收集依赖安装过程的日志文件。如果 .NET4 或 WindowsInstaller3 安装失败,我不希望用户搜索各种 .log 文件。所有信息都应该收集在一个地方,如果出现问题,我应该向用户显示一个自定义弹出对话框,其中包含保存完整安装日志文件并将其发送给我的选项
安装程序应该能够检测是否已安装了我的应用的较新版本,并在退出之前显示有意义的自定义错误消息
安装程序应该能够检测是否已经安装了我的应用程序的旧版本。并提供用户退出安装或卸载旧版本并安装新版本。顺便说一句,没有计划进行小组件升级,我更喜欢重新安装一切新鲜的东西(我猜,这是 WindowsInstaller 方面的重大升级)。 Installshield LE 为此失败了,它只是显示了一个错误框,其中包含有关另一个产品的消息,但没有提供卸载它
-
在升级的情况下,安装程序应该能够检测某些应用程序组件是否正在使用(运行应用程序进程)并显示自定义错误消息,而不仅仅是一些神秘的“安装失败”
我已经读到,即使我的 UpgradeCode 完好无损,管理升级也可能有点痛苦,因为此代码以压缩方式存储在 Windows 注册表中,而且如果用户重命名下载的文件,它可能会得到被 WindowsInstaller 检测为全新产品......或者这可能只是 WindowsInstaller .msi 文件的情况,而 WiX 有一些技巧可以避免这个问题?
关于更新下载 - 我的应用程序本身也需要此功能。我不确定如何有效地实现它,因此我可以在 WiX 安装程序和我的应用程序中重复使用相同的更新下载器代码/实用程序。
是否可以使用当前现有的 WiX 工具来满足所有这些要求,或者我可能需要从头开始编写一些组件的代码?
【问题讨论】:
标签: wix