WiX 工具集 - 安装后再次处理 运行 安装程序的情况

WiX Toolset - Handling the case of running the installer again after it's been installed

我有一个自定义引导程序 (C# WPF),它运行良好。如果安装程序在安装后从命令行获取 运行,它会弹出一个 window 允许用户 select 如果他们想要修改、修复或卸载。到目前为止,一切都很好。修改模式启动 UI,最终调用 Bootstrapper.Plan(LaunchAction.Modify)。问题是,如果我从启动器 UI 调用它,它会立即抱怨之前的安装需要重新启动。

我还没有找到任何关于这应该做什么的好例子。甚至连 WiX 邮件列表都是空白的。

有什么想法吗?

对于该重启消息的屏幕截图会有所帮助 - 只是为了了解它可能来自哪里并获取要搜索的文字字符串。顺便说一句,您自己看过 WiX 源代码吗? (WiX 3.111 branch)

我开始写很多关于重启的文章。不好。也许只是一些问题:

  1. 每次调用修改时都会发生这种情况吗?是否可以在多台计算机上重现?或者可能只是 Windows 更新在有问题的计算机上起作用?

  2. 我假设您已经重新启动了出现问题的计算机,并且当您 re-launch 捆绑包时您又看到了问题?

  3. 在初始安装期间,您是否在 MSI 文件中安排了任何重新启动?

    • 是否使用 ScheduleReboot action or a custom action which schedules a reboot with a call to MsiSetMode(例如)?
    • ,但这可能不是重点。当软件包 运行 处于静默模式(加上其他问题)时,基本上配置不当 reboot-constructs 会在没有警告的情况下触发自发的、意外的重启。
  4. 您能否尝试 运行 在此答案中找到的测试 VBScript:WiX behaving badly on XP machine with windows update issues 以检查脚本是否报告需要重新启动?


除此之外,我想你可以尝试 运行 在调试模式下燃烧自己 (不确定需要多少管道才能得到 运行 ning) 或者先尝试 看看你是否能看到一些明显的东西。后者应该很快吧?


您可以搜索一些注册表位置,看看您是否可以找出是什么触发了重新启动警告。 Get-PendingReboot-Query. And a similar PowerShell script.

所以最后是用户错误。 :-( 好吧。我确实学到了很多关于如何弄清楚 Windows 检查是否需要重启等的知识。

问题最后很简单。在修改 运行 期间,它正在卸载,然后重新安装一些服务。问题是,当它 运行s(因为你必须将其设置为修复才能使其工作)时,它会再次复制所有文件,并且服务在开始时仍然 运行ning安装。解决方法是在实际文件复制开始之前卸载任何可能锁定文件的东西,这对我来说解决了这个问题。

感谢你们的帮助,所有的信息都帮助我寻找不同的方向,直到我找到问题所在。一如既往的精彩社区!