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)の4つのバージョンがあります。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に更新されたことがわかるからです。

以前のsetupsフォルダーの下のパッチデザイナーでは、順序は実際に1.0.1、1.0、1.1.1であることに気付きました。確かに、これはWindowsインストーラーがパッチ変換を実行する順序を決定していませんか?!

誰かがこの振る舞いについて知っているか、私を正しい方向に向けることができるなら、私はそれをとても感謝しています!:)

ありがとう!

アップデート

問題になっていると思います!:(変換の順序が正しくないと、ファイルテーブルが更新されるときに問題が発生すると思います。1.0.1-> 1.1.2から変換されていると見なされるため、ファイルテーブルの行が存在し、変更する必要があると想定します。 、実際に1.0-> 1.1.2から変換していて、行がテーブルに存在せず、追加する必要がある場合!

誰か考えましたか?

4

1 に答える 1

1

パッチ変換の順序が、私が経験していた問題を引き起こしていました!

デフォルトでは、InstallShieldは、パッチが適用されているバージョンよりも前の任意のバージョンにパッチ変換をインストールできるようになっているようです。つまり、ターゲットマシンへの1.0インストールで使用するために、Windowsインストーラーから見て有効な3つの変換すべてです。

なんでこれなのかわからない!1.0.1-> 1.1.2変換を1.0インストールに適用したいのは誰ですか?!?!?!本当に??!?!?!

とにかく、変換が構築されたバージョンに変換を適用する場合に使用する必要がある設定(ええ、奇妙なシナリオです!)は、以前の設定と[詳細設定]タブを選択したときに[バージョンの関係]プロパティを変更することです。

以前のセットアップバージョン=最新のセットアップバージョンに変更する必要があります。ああ、それは完全に間違っていて誤解を招くので、InstallShieldの説明をわざわざこのプロパティの説明を見ないでください!

バージョン関係プロパティの変更

この変更は、Windowsインストーラーが特定のインストール済みバージョンの正しい変換を検索することを意味します(つまり、1.0インストールの場合は1.0-> 1.1.2変換を選択します)。

私は正直なところ、この動作がデフォルトではないことを信じることができません。InstallShieldが提供する完全に誤解を招く説明にショックを受けて愕然とします。

そして息を…

于 2012-06-21T13:20:24.303 に答える