2012-06-19 29 views
1

這似乎還沒有造成問題,但這是我真正想了解的。基本上,我們有四個版本的產品:1.0(2.6.0.0),1.0.1(2.6.1.0),1.1.1(2.6.3.0)和1.1.2(2.6.4.0)。我們只是測試1.1.2的完整和補丁安裝程序。爲什麼Windows Installer以錯誤的順序安裝我的補丁變換?

我們看到的奇怪之處在於,當從1.0 - > 1.1.2應用補丁時,安裝程​​序的日誌顯示它首先選擇使用1.0.1 - > 1.1.2補丁變換,對我來說是愚蠢的,因爲它可以使用1.0到1.1.2的轉換。日誌如下:

SequencePatches starts. Product code: {A9206E66-68A6-4A64-8ECA-F96D2635FB33}, Product version: 2.6.0.0, Upgrade code: {58142252-3B0E-44CA-99EC-F9FB3C4D976E}, Product language 1033 
MSI (c) (A4:18) [14:11:53:235]: PATCH SEQUENCER: verifying the applicability of minor upgrade patch C:\DOCUME~1\Testuser\LOCALS~1\Temp\{3E3C7709-FF95-48AF-8836-5D62996F0FD4}\[productname]112enu_x86.msp against product code: {A9206E66-68A6-4A64-8ECA-F96D2635FB33}, product version: 2.6.0.0, product language 1033 and upgrade code: {58142252-3B0E-44CA-99EC-F9FB3C4D976E} 
MSI (c) (A4:18) [14:11:53:235]: PATCH SEQUENCER: minor upgrade patch C:\DOCUME~1\Testuser\LOCALS~1\Temp\{3E3C7709-FF95-48AF-8836-5D62996F0FD4}\[productname]112enu_x86.msp is applicable. 
MSI (c) (A4:18) [14:11:53:245]: SequencePatches returns success. 
MSI (c) (A4:18) [14:11:53:245]: Final Patch Application Order: 
MSI (c) (A4:18) [14:11:53:245]: {1721243D-5A87-4972-9226-E87EE0B87A08} - C:\DOCUME~1\Testuser\LOCALS~1\Temp\{3E3C7709-FF95-48AF-8836-5D62996F0FD4}\[productname]112enu_x86.msp 
MSI (c) (A4:18) [14:11:53:245]: {1721243D-5A87-4972-9226-E87EE0B87A08} - C:\DOCUME~1\Testuser\LOCALS~1\Temp\{3E3C7709-FF95-48AF-8836-5D62996F0FD4}\[productname]112enu_x86.msp 
MSI (c) (A4:18) [14:11:53:245]: Machine policy value 'DisablePatch' is 0 
MSI (c) (A4:18) [14:11:53:245]: Machine policy value 'AllowLockdownPatch' is 0 
MSI (c) (A4:18) [14:11:53:245]: Machine policy value 'DisableLUAPatching' is 0 
MSI (c) (A4:18) [14:11:53:245]: Machine policy value 'DisableFlyWeightPatching' is 0 
MSI (c) (A4:18) [14:11:53:245]: Turning off patch optimization. {1721243D-5A87-4972-9226-E87EE0B87A08} patch is not authored to support it. 
MSI (c) (A4:18) [14:11:53:245]: Looking for patch transform: 101enuTo112enu 

... More stuff ... 

MSI (c) (A4:18) [14:11:53:265]: Disallowing uninstallation of patch {1721243D-5A87-4972-9226-E87EE0B87A08} because it adds new entries to table CreateFolder 
MSI (c) (A4:18) [14:11:53:265]: Note: 1: 2205 2: 3: PatchPackage 
MSI (c) (A4:18) [14:11:53:265]: TRANSFORM: 'PatchPackage' table is missing or empty. No pre-transform fixup necessary. 
MSI (c) (A4:18) [14:11:53:265]: TRANSFORM: Applying regular transform to database. 

... More stuff ... 

MSI (c) (A4:18) [14:11:53:265]: Looking for patch transform: 10enuTo112enu 
DEBUG: Error 2748: Transform 10enuTo112enu invalid for package C:\WINDOWS\Installer\882d.msi. Expected product version <= 2.6.0.0, found product version 2.6.4.0. 
1: 2748 2: 10enuTo112enu 3: C:\WINDOWS\Installer\882d.msi 4: 2.6.0.0 5: 2.6.4.0 
MSI (c) (A4:18) [14:11:53:265]: Skipping validation for patch transform #10enuTo112enu. Will not apply because previous transform was invalid 
MSI (c) (A4:18) [14:11:53:265]: Looking for patch transform: 111enuTo112enu 
DEBUG: Error 2748: Transform 111enuTo112enu invalid for package C:\WINDOWS\Installer\882d.msi. Expected product version <= 2.6.3.0, found product version 2.6.4.0. 
1: 2748 2: 111enuTo112enu 3: C:\WINDOWS\Installer\882d.msi 4: 2.6.3.0 5: 2.6.4.0 
MSI (c) (A4:18) [14:11:53:265]: Skipping validation for patch transform #111enuTo112enu. Will not apply because previous transform was invalid 

那麼它爲什麼選擇先應用錯誤的轉換?我猜它應用它,因爲當它到達正確的轉換時,它知道產品版本已更新到2.6.4.0。

我注意到,在以前的設置文件夾下的補丁設計器中,順序確實是1.0.1,1.0,1.1.1。這當然不是確定Windows Installer運行修補程序轉換的順序嗎?!

如果有人知道這種行爲,或者可以指向正確的方向我非常感謝! :)

謝謝!

更新

我認爲這已經成爲一個問題! :(我認爲在更新File表時,不正確的轉換順序會導致問題,因爲它認爲它是從1.0.1 - > 1.1.2轉換的,所以它假定File表中的一行存在,只需要修改的時候,確實我們從1.0轉化 - > 1.1.2與該行不存在於表和需求增加

任何人有什麼想法

回答

1

補丁變換順序是造成問題嗎?正在經歷!

看起來,默認情況下,InstallShield將允許將修補程序變換安裝在任何早於修補程序版本的版本上。換句話說,我所有的三個變換都是在ey在目標機器上的1.0安裝中使用Windows安裝程序!

爲什麼這是我不知道!誰願意將1.0.1 - > 1.1.2轉換應用於1.0安裝?!?!?!真??!?!?!

無論如何,如果您想要將轉換應用於轉換所針對的版本(yeah,weird senario!)時應使用的設置是在選擇先前的版本時更改版本關係屬性設置和高級選項卡。

它需要更改爲上一個安裝版本=最新安裝版本。哦,並且不要打擾InstallShield描述這個屬性的解釋,因爲它是完全錯誤的和誤導性的!

Changing the Version Relationship property

這種變化現在將意味着Windows安裝程序將尋找正確變換爲給定的安裝版本(即它會選擇1.0 - > 1.1.2變換1.0安裝)。

老實說我還是不敢相信這種行爲不是默認的,而且我對安裝Shield給出的完全誤導性的描述感到震驚和震驚。

和呼吸....