将应用程序提交到 Windows 应用商店时,您可以使用 EXE 或 MSI 或 MSIX 安装程序来执行此操作。
使用EXE时必须提供退出代码,而所有退出代码都不容易实现,例如磁盘已满、用户取消、网络故障等。
但是,使用 MSI 时无需提供退出代码。
我面临的另一个问题是,在使用 MSI 时,我还必须打包应用程序依赖项。就我而言,这是一个 Visual C++ Redistributable。
我正在使用
Wix4
工具集来创建 MSI 安装程序;为了将安装与其所需的依赖项打包在一起,我创建了一个 Wix Bundle。
但这会生成一个
EXE
,这违背了我最初创建 MSI 的目的(再次需要退出代码)。
如何解决这个问题,拥有一个也附带其依赖项的 MSI 安装程序。
捆绑包的存在是将先决条件打包到单个包中,因为 MSI 本身无法这样做。 VCRedist 实际上是一个 (WiX v3) 捆绑包,其中包含几个 MSI。
幸运的是,默认情况下,基于 WiX 的捆绑包(即构建在 Burn 引擎上)返回相同的退出代码和 MSI 包。捆绑包不会返回所有这些代码,因为许多代码不适用,但重要的代码(例如 0、1602、1603、1641)都是相同的。