Wix 当第二个用户运行应用程序时,Windows每台计算机安装需要引用原始安装程序

Wix 当第二个用户运行应用程序时,Windows每台计算机安装需要引用原始安装程序,wix,windows-installer,Wix,Windows Installer,我正在用Wix编写MSI安装程序。安装程序可以在每个用户和每台机器的上下文中工作 在每台机器的安装中,一切都很顺利;为初始用户安装和配置产品。切换到测试用户后,应用程序将正确显示在“开始”菜单中。在第一次运行它时,msiexec进程将以应用程序正在配置的消息开始。但是,如果原始.msi已被删除,此过程将失败 失败的安装操作在其日志中显示以下消息: 错误1706。找不到产品myProduct的安装包。请使用安装包“myInstaller.msi”的有效副本重试安装 ===日志记录已停止:2017年

我正在用Wix编写MSI安装程序。安装程序可以在每个用户和每台机器的上下文中工作

在每台机器的安装中,一切都很顺利;为初始用户安装和配置产品。切换到测试用户后,应用程序将正确显示在“开始”菜单中。在第一次运行它时,msiexec进程将以应用程序正在配置的消息开始。但是,如果原始.msi已被删除,此过程将失败

失败的安装操作在其日志中显示以下消息:

错误1706。找不到产品myProduct的安装包。请使用安装包“myInstaller.msi”的有效副本重试安装

===日志记录已停止:2017年3月16日11:15:52===

我从Rob Mensching(Wix的负责人)的一篇文章中了解到,仅仅编辑源代码列表以指向windows cached.msi是不可能的,我已经找到了另一个备份点。对吗


有没有办法阻止用户在第一次运行时调用msi的整个操作?缓存msi或保留原始msi并不理想,我希望在自定义引导程序中使用.msi,包括在安装完成后删除msi。

Microsoft建议您保留原始msi,第31条:

我不会重复它所说的关于修复/恢复能力的内容,但是你不能保证在某个时候不需要源MSI

您可能会得到这种“修复”,因为有一些资源(最有可能是一个文件)正在安装到用户配置文件位置。当其他用户登录并使用该应用程序时,该文件丢失,因此该应用程序可能已损坏。例如,安装到用户应用程序数据中的文件需要可供系统的所有用户使用,而不仅仅是安装它的用户


因此,保留MSI可能并不理想,但强烈建议保留MSI,如果您的产品由多个用户使用,则更可能需要MSI。MsiInstaller下应该有一个应用程序事件日志条目,说明缺少的资源

我在应用程序事件日志中找到了导致修复操作的文件,我可以将其修复为不导致修复操作。看起来我需要找到一种缓存.msi的方法。谢谢