【问题标题】:WiX major upgrade doesn't complete installation until spawnedWiX 主要升级在生成之前不会完成安装
【发布时间】:2012-04-05 17:11:35
【问题描述】:

我根据找到的代码 here 创建了一个安装程序。如果存在以前版本的应用,我希望安装程序在安装新版本之前将其删除。

如果是全新安装,一切顺利。

如果是升级,就会发生奇怪的事情。正如预期的那样,旧版本被删除,注册表被更改,快捷方式被放置在桌面上。奇怪的是,安装程序完成后,应用程序文件夹中不存在主文件。

升级后启动时,会弹出一个小的安装程序消息框并指出“请稍候,Windows 正在配置 -app name-..”。在此快速消息之后,该文件应存在于应用程序文件夹中,并且应用程序启动。

但在发布之前,它并不存在。我什至在启动应用程序之前尝试重新启动,看看如果文件卡在某种缓存中,是否会放置文件。

有人见过这种行为吗?这有点像this questiom,但每次升级都会发生。

【问题讨论】:

    标签: wix windows-installer major-upgrade


    【解决方案1】:

    奇怪的是,安装程序完成后,应用程序文件夹中不存在主文件。

    如果组件管理不正确,这是 Windows 安装程序升级的常见问题。如果您从控制面板启动安装程序进入维护模式并进行“修复”,您通常会看到丢失的文件重新出现。在这种情况下,windows repaired the application automatically 当你启动它时。

    我头顶的几个可能的解释:

    1. 安装程序的新版本将此文件安装在具有新 GUID 的组件中。这会导致问题,因为组件 GUID 应该保持稳定。

    2. 您的安装程序会为每个组件安装多个文件。这会导致问题,因为是否应该安装组件是由keypath 决定的,并且只有一个文件可以是keypath。 Stick to one file per component.

    3. 文件的“新版本”实际上有一个较低的版本号。这样的“升级”doesn't work correctly

    【讨论】:

    • 在您可能的解释中,只有第一个适合我的情况。我会看看是否能找到原始应用程序的组件 GUID。如果我不能,有没有办法在安装时强制文件删除?
    • @Tony:我不知道。问题不在于没有安装该文件,而是在安装过程结束时删除旧版本的产品时卸载。更改 GUID 会扰乱组件引用计数机制。
    • 我尝试将旧组件 GUID 用于主文件,但问题仍然存在。这一次,安装程序也强制重新启动。我确实注意到旧安装程序的所有文件都在该组件条目下。
    • @Tony:重启意味着某些文件的升级被延迟,因为它正在被进程使用。您安装的服务是否在您尝试升级时仍在运行?
    • 不,不应该有任何进程受到影响。新的安装程序会删除旧版本的文件(两个 Word 文档和一个网页快捷方式)并安装一个新的 Word 文档(以替换两个旧版本)。新安装程序所做的其他事情是 a) 它将文档的文件夹添加到 Office 信任中心的受信任位置,b) 在桌面上创建 Word 文档的快捷方式。
    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多