WiX MSI:将演示项目与安装程序捆绑在一起

Posted

技术标签:

【中文标题】WiX MSI:将演示项目与安装程序捆绑在一起【英文标题】:WiX MSI: Bundle a Demo Project with Installer 【发布时间】:2014-10-01 03:10:26 【问题描述】:

我正在尝试将演示项目与应用程序的 WiX MSI 安装程序捆绑在一起。我的目标是在用户的 Documents 目录中创建一个包含“Demo Project”文件夹的“Projects”文件夹。

由于我的安装范围是“perMachine”,因此将文件添加到用户目录会导致每个文件出现以下错误:

It must use a registry key under HKCU as its KeyPath, not a file

我可以通过将 RegistryValue 元素添加到每个组件来修复此错误,但演示项目至少有 1000 个文件。

我正在考虑为演示项目创建另一个安装程序,该安装程序将具有“perUser”安装范围,然后将其捆绑到 WiX 引导程序中。唯一的缺点是它感觉像一个黑客。

在为应用程序安装补充材料时,推荐的方法是什么?我应该构建另一个安装程序还是有一个 WiX 扩展允许我将文件复制到用户的文档目录?

【问题讨论】:

【参考方案1】:

因为它是一个演示项目,并且对您的应用程序并不重要,所以一种方法是将其压缩并将该单个 zip 文件作为组件。在您的每文件组件案例中,演示项目的潜在问题是用户将开始以某种方式摆弄演示,最终将提示 Windows Installer 修复它。如果项目是客户使用开发工具打开并开始更改的项目,则尤其如此。您不希望与修复的演示交互影响您正在运行的应用程序。

没有将文件复制到用户文件夹的 WiX 或 MSI 方法,因为这实际上是注册表键路径的用途。它还具有为尚未创建的用户帐户工作的优势。当另一个用户登录并使用应用程序时,Windows 注意到该用户缺少密钥路径,并提示从原始安装源安装密钥路径组件(文件)。

【讨论】:

我喜欢 zip 文件的想法。它将减少有关演示不起作用的支持电话......因为用户更改了它。 (过去,我在只读位置安装了演示。)重新回到原始示例,重新开始通往成功的道路。 (当然,源代码管理也会这样做。) 感谢 PhilDW 的反馈。我今天早些时候注意到,WiX 允许在安装软件包后执行命令。也许我可以将 zip 与应用程序捆绑在一起,然后将其解压缩到用户的 Documents 目录中。这可能会消除与注册表打交道的麻烦。

以上是关于WiX MSI:将演示项目与安装程序捆绑在一起的主要内容,如果未能解决你的问题,请参考以下文章

如何在升级过程中运行捆绑包时,如何在WIX(Windows安装程序xml)引导程序项目中将按钮文本更改为“升级”?

如何在 Wix 安装程序中隐藏标题栏?

回滚到以前版本的 WiX 捆绑安装程序

自定义 WiX Burn 引导程序用户界面?

WiX Bootstrapper 项目结构

如何从包含多个 MSI 的 wix 自定义引导程序包中安装/卸载单个 msi,例如安装项目的添加/删除功能?