我如何对使用 WiX 或 InstallShield 制作的安装程序进行测试?

How could I perform test to installers made using WiX or InstallShield?

我想知道是否有一种方法可以为安装程序定义测试(类似于单元测试),特别是在 WiX 和 InstallShield 中制作的安装程序。

为了测试您的自定义操作,Wix 工具集中有一个名为 Lux 的工具。我确实尝试过一次,但还没有实施,因为我不太确定它所提供的优势。

关于这么久以前我提出的问题很少。以下是一些可能对您有所帮助的信息

http://wixtoolset.org/documentation/manual/v3/overview/lux.html

http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Lux-Custom-action-testing-framework-Advantages-td7579491.html

http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Lux-Custom-action-testing-framework-td7579265.html

除此之外,我一无所知。

您需要准确定义您认为需要测试的功能。验证 MSI 文件是否会正确安装文件似乎毫无意义,因为那只是测试 Microsoft 的功能。这就像测试 Explorer 会将一堆文件从 A 复制到 B。另一个例子:如果您正确指定该数据,MSI 将正确安装服务,但是您如何知道 MSI 文件中的内容在第一名?另外请记住,MSI 安装是事务性的 - 它要么全部工作要么全部失败,所以如果它完成那么它就可以工作,如果失败则全部回滚。不存在部分安装这样的东西。

问题是安装的几乎所有功能都属于 Microsoft,因此剩下的就是确保您的自定义操作代码检测到错误并在适当的情况下使安装失败,以及您被告知的一切(文件应安装的位置、它们的依赖项、COM 信息、先决条件等)是正确的。

我从未遇到过任何人测试系统上安装了 MSI 文件中的内容,因为那只是测试 Microsoft 软件是否完成了它的工作。因此,如果您被告知要在某个位置安装文件,那么您可以验证该文件是否安装在那里,但如果应用程序因为位置错误而失败,那么您只是在浪费时间!因此,IMO 唯一重要的测试是对已安装产品的完整测试。