2015-11-07 114 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