2015-11-07 119 views
0

我试图生成MSP出最新的和以前的MSI如下场景:取消安装不支持

  • 以前的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

错误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之间的增量,始终创建一个新的修补程序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。

+0

1.0.0。*版我用它来解释,是的,实际版本是1.3.0。*。第一个msp是在1.0.0.0和1.0.0.1之间生成的,这个msp安装在机器上。然后,当生成1.0.0.2 msi时,我将其用作最新的msi,并且基础(前一个)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? –

+0

如果您的意思是6位数字的产品版本无效,它正在工作,并且从未收到错误信息,并且它正在将其应用于ARP中。 –

+0

如果缺少PCP文件中的所有设置和创建补丁的日志,我只能指出明显的错误。而且ProductVersion显然是无效的,文档说三位数字被使用,所以为了增加版本,你应该在前三位数字中增加。否则,你所有的补丁版本都是1.3.0。同时确认您没有更改ProductCode。 – PhilDW