Това все още не изглежда да създава проблем, но е нещо, което наистина искам да разбера.
По принцип имаме четири версии на нашия продукт: 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.
Странните неща, които виждаме е, че при прилагане на корекция от 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 изпълнява трансформациите на корекцията?!
Ако някой знае за това поведение или може да ме насочи в правилната посока, ще съм много благодарен! :)
Благодаря!
Актуализация
Мисля, че се превърна в проблем! :( Мисля, че неправилното подреждане на трансформациите причинява проблеми, когато таблицата с файлове се актуализира. Тъй като смята, че се трансформира от 1.0.1 -> 1.1.2, приема, че има ред в таблицата с файлове и просто трябва да се промени , когато наистина се трансформираме от 1.0 -> 1.1.2 и редът не присъства в таблицата и има нужда от добавяне!
Някой има ли някакви мисли?