不支持卸载软件包

时间:2015-11-07 12:41:45

标签: windows-installer installshield msi-patch

我尝试使用以下方案中的最新和之前的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保留不同的文件?

1 个答案:

答案 0 :(得分:1)

错误1646意味着您正在尝试卸载未标记为可卸载的修补程序。没有足够的信息知道是否是这种情况,sosome猜测在这里。

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

因此,您始终将补丁构建为基础和最新MSI之间的差异,始终创建新的补丁guid,并希望您不会更改MSI ProductCode。

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

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

所以你不能排除无效版本与错误相关的可能性,特别是如果所有实际的MSI版本都是1.3.0.0。