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



我正在研究用Wix编写的MSI安装程序。安装程序在每用户和每计算机上下文中都有效。

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

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

错误 1706。找不到产品 myProduct 的安装包。使用安装包"myInstaller.msi"的有效副本再次尝试安装。

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

我从阅读Rob Mensching(Wix负责人)的博客文章中了解到,可能不可能只编辑源列表以指向缓存.msi的窗口,这一点得到了我发现的另一篇文章的支持。这是对的吗?

有没有办法阻止用户首次运行时调用 msi 的整个操作发生?缓存 msi 或保留原始内容并不理想,我想在自定义引导程序中使用该.msi,该引导程序涉及在安装完成后删除 msi。

Microsoft建议您保持原始 MSI 可用,规则 31:

https://blogs.msdn.microsoft.com/windows_installer_team/2006/05/24/tao-of-the-windows-installer-part-3/

我不会重复它所说的修复/弹性,但你不能保证有时不需要源 MSI。

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

因此,保留 MSI 可能并不理想,但强烈建议您这样做,并且在您被多个用户使用产品的情况下,它更有可能需要。MsiInstaller 下应该有一个应用程序事件日志条目,说明缺少的资源。

最新更新