【问题标题】:Un-installation of the package is not supported不支持卸载包
【发布时间】:2015-11-07 12:41:44
【问题描述】:

我正在尝试从最新和以前的 MSI 中生成 MSP,如下所示:

  • 之前的 MSI 是固定的并用作基线。
  • 最新的 MSI 是在每晚对包含的文件进行新修改后生成的,并且每一代都会获得一个新的 ProductVersion(服务器上的每个构建都会发生这种情况)。
  • 以前的 MSI 是基准,已安装在机器上;假设它的版本为 1.0.0.0。
  • 第一次构建时生成的 MSP 安装成功,现在产品版本为 1.0.0.1。
  • 现在最新的 MSI 是 1.0.0.2 并且有新的修改,我们想要生成一个新的 MSP 来获得对机器的这些修改,MSP 是根据之前的 MSI 1.0.0.0 和最新版本之间的差异生成的现在是 1.0.0.2。

问题是我们在尝试安装第二个 MSP 时遇到错误:

不支持卸载包。

以下是错误日志:

MSI (s) (78:EC) [07:57:01:214]: Final Patch Application Order:
MSI (s) (78:EC) [07:57:01:214]: {C39177DC-24FD-432E-9D50-159E7E3CC62C} - C:\temp\[Package Name].msp
MSI (s) (78:EC) [07:57:01:214]: Other Patches:
MSI (s) (78:EC) [07:57:01:214]: Unknown\Absent: {9BEBFF56-7735-4618-BF01-01E96548FA81} - 
MSI (s) (78:EC) [07:57:01:214]: Product: [Package Name] - Update '[Package Name]' could not be removed. Error code 1646. 
Additional information is available in the log file C:\Users\Administrator\Desktop\msp.log.

MSI (s) (78:EC) [07:57:01:214]: Windows Installer removed an update. Product Name: [Package Name]. Product Version: 1.3.0.0.81.159. Product Language: 1033. 
Manufacturer: [Company]. Update Name: [Package Name]. Removal success or error status: 0.

MSI (s) (78:EC) [07:57:01:214]: Product: [Package Name] - Update '{C39177DC-24FD-432E-9D50-159E7E3CC62C}' could not be installed. Error code 1646. 
Additional information is available in the log file C:\Users\Administrator\Desktop\msp.log.

MSI (s) (78:EC) [07:57:01:214]: Windows Installer installed an update. Product Name: [Package Name]. Product Version: 1.3.0.0.81.159. Product Language: 1033. 
Manufacturer: [Company]. Update Name: {C39177DC-24FD-432E-9D50-159E7E3CC62C}. Installation success or error status: 1646.

MSI (s) (78:EC) [07:57:01:214]: Product: [Package Name] -- Installation failed.

MSI (s) (78:EC) [07:57:01:214]: Windows Installer installed the product. Product Name: [Package Name]. Product Version: 1.3.0.0.81.159. Product Language: 1033. 
Manufacturer: [Company]. Installation success or error status: 1646.

Uninstallation of the update package is not supported.
C:\Windows\Installer\5d9684f.msi

允许这样做吗?或者我们是否必须在每次安装 MSP 时更改之前的 MSI,所以我们只为每个 MSP 保留不同的文件?

【问题讨论】:

    标签: windows-installer installshield msi-patch


    【解决方案1】:

    错误 1646 表示您正在尝试卸载未标记为可卸载的补丁。没有足够的信息知道是否是这种情况,所以这里有些猜测。

    总的来说,您的方法看起来是正确的。基线始终为 1.0.0,补丁始终构建为该基础和每个新 MSI 文件之间的增量。您的评论“..MSP 是根据以前的 MSI 1.0.0.0 和最新的 1.0.0.2 之间的差异生成的。”有点误导,因为在您的示例中,以前的 MSI 是 1.0.0.1。也许您的意思是基础 1.0.0.0。

    因此,您始终将补丁构建为基本 MSI 和最新 MSI 之间的增量,始终创建新补丁 guid,并且希望您不会更改 MSI 产品代码。

    但是,您的 ProductVersion 示例与日志中的内容不匹配。产品版本:1.3.0.0.81.159 不是有效版本:

    https://msdn.microsoft.com/en-us/library/aa370859(v=vs.85).aspx

    因此您不能排除无效版本与错误有关的可能性,尤其是如果所有实际的 MSI 版本都是 1.3.0.0。

    【讨论】:

    • 1.0.0.* 版本我用它来解释,是的,实际版本是 1.3.0.*。第一个 msp 是在 1.0.0.0 和 1.0.0.1 之间生成的,这个 msp 是安装在机器上的。然后在生成 1.0.0.2 msi 时,我用作最新的 msi,而 base(previous) msi 仍然是 1.0.0.0,生成了 msp 版本 1.0.0.2,但是当尝试安装在 1.0.0.1 msp 之上时,我根据主要帖子收到错误。是的,每次为 msp 生成新的 GUID 时,msi 产品都是相同的。是否允许这样做,或者在创建 1.0.0.2 msp 时我必须将基数更改为 1.0.0.1?
    • 如果您的意思是 6 位数的产品版本无效,它正在工作并且从未收到错误,并且它正在 ARP 中应用它。
    • 在没有PCP文件中的所有设置和补丁创建日志的情况下,我只能指出明显错误的地方。并且 ProductVersion 显然无效,文档说使用了三位数字,因此要增加版本,您应该增加前三位数字。否则你所有的补丁版本都是 1.3.0。还要验证您没有更改 ProductCode。
    • 我也有类似的问题。我正在尝试让 Patch 为 SqlScript 元素工作。在我的新 (1.0.1.0) 中,如果我添加一个带有 SqlScript 元素的新组件,那么即使在补丁文件中设置了 AllowRemoval=yes,也只有卸载选项在 ARP 中消失。如果我不添加新组件而只修改现有组件,则不会出现此问题。此外,这似乎仅适用于 SqlScript 元素,而不适用于其他文件。
    猜你喜欢
    • 2017-05-19
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 2017-09-11
    • 2016-11-22
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多