Wix 工具集 - MSI 安装程序 - Window 的弹出窗口在安装的应用程序启动时不断出现
Wix Toolkit - MSI Installer - Window's pop-up constantly appears when installed application is launched
我有一个 WiX 脚本,它创建一个安装程序,在 Microsoft Windows 7 和 10 机器上静默放置一个应用程序。没有选项,所以不需要 GUI。
一些客户抱怨当他们启动已安装的应用程序时(在成功安装很久之后),Windows 弹出 MSI 安装程序消息 "Please wait while Windows configures [APPLICATION_NAME]"。他们说每次都会发生这种情况,并且它运行的时间与最初安装所花的时间差不多。
我以前经常弄这个,还以为是安装的一些文件被修改了。我的结论是,当 MSI 运行 第二次和随后的时间时,它会用安装程序中的原始文件覆盖修改后的文件。
由于这些文件打算在安装后进行修改,因此我将 'NeverOverwrite="yes"' 添加到它们的组件定义中,如下所示:
<Component Id="..." NeverOverwrite="yes" Directory="..." Guid="...">
到目前为止,这似乎解决了问题。有什么我应该关注或进一步调查的想法吗?
Short Answer: This is an MSI self-repair problem.
- Work out what component triggers the self-repair. Details below.
- Correct the situation by making changes to the setup eliminating the conflict situation.
自修复:这就是经典的“意外自修复" 当满足某些条件时,MSI 包经常出现这个问题。关于这个问题我已经写了很多次了,所以我会回收一些答案。我认为最容易获得的答案可能是这两个(请至少阅读第一个 link):
- Visual Studio 2015 msi build initiates another installation
- Why does the MSI installer reconfigure if I delete a file?
使用事件日志进行调试:要确定哪个 MSI 组件触发了您需要通过检查进行调试的自我修复事件日志。 Stefan Kruger 的 FAQ 条目对此进行了描述:Windows Installer launches unexpectedly, for no obvious reason. Alternatively read Flexera's Article: Understanding Windows Installer (MSI) Self-Repair(具有漂亮的屏幕截图)。
Components & Products:当你有一个违规的组件GUID时,你可以通过[=83=来确定它属于什么产品] 这个 VBScript:Look Up Products for Component。它可能是另一种产品 - 如果不是,只需打开您产品的 MSI 文件并找到组件的关键路径。
详细信息:以及带有完整解释的非常深入的答案。尝试使用粗体第三个 link 来解决实际问题:
- Self-repair - explained
其他资源:
- What is the use of Repair option in a msi installer and what does it really do (internally)?
我有一个 WiX 脚本,它创建一个安装程序,在 Microsoft Windows 7 和 10 机器上静默放置一个应用程序。没有选项,所以不需要 GUI。
一些客户抱怨当他们启动已安装的应用程序时(在成功安装很久之后),Windows 弹出 MSI 安装程序消息 "Please wait while Windows configures [APPLICATION_NAME]"。他们说每次都会发生这种情况,并且它运行的时间与最初安装所花的时间差不多。
我以前经常弄这个,还以为是安装的一些文件被修改了。我的结论是,当 MSI 运行 第二次和随后的时间时,它会用安装程序中的原始文件覆盖修改后的文件。
由于这些文件打算在安装后进行修改,因此我将 'NeverOverwrite="yes"' 添加到它们的组件定义中,如下所示:
<Component Id="..." NeverOverwrite="yes" Directory="..." Guid="...">
到目前为止,这似乎解决了问题。有什么我应该关注或进一步调查的想法吗?
Short Answer: This is an MSI self-repair problem.
- Work out what component triggers the self-repair. Details below.
- Correct the situation by making changes to the setup eliminating the conflict situation.
自修复:这就是经典的“意外自修复" 当满足某些条件时,MSI 包经常出现这个问题。关于这个问题我已经写了很多次了,所以我会回收一些答案。我认为最容易获得的答案可能是这两个(请至少阅读第一个 link):
- Visual Studio 2015 msi build initiates another installation
- Why does the MSI installer reconfigure if I delete a file?
使用事件日志进行调试:要确定哪个 MSI 组件触发了您需要通过检查进行调试的自我修复事件日志。 Stefan Kruger 的 FAQ 条目对此进行了描述:Windows Installer launches unexpectedly, for no obvious reason. Alternatively read Flexera's Article: Understanding Windows Installer (MSI) Self-Repair(具有漂亮的屏幕截图)。
Components & Products:当你有一个违规的组件GUID时,你可以通过[=83=来确定它属于什么产品] 这个 VBScript:Look Up Products for Component。它可能是另一种产品 - 如果不是,只需打开您产品的 MSI 文件并找到组件的关键路径。
详细信息:以及带有完整解释的非常深入的答案。尝试使用粗体第三个 link 来解决实际问题:
- Self-repair - explained
其他资源:
- What is the use of Repair option in a msi installer and what does it really do (internally)?