7

私たちのチームは最近、問題のある特定のキーを変更するために、マイナーなレジストリ修正をユーザーにプッシュすることを検討しています。レジストリ内の 1 つのキー/値を更新するだけで十分です。

そのため、現時点では、Wix を使用して製品の .msi インストーラーを作成しています。.msp パッチ ファイルの生成に対する Wix のサポートを調べたところ、.msp を作成する唯一の方法は、次のようなやや複雑な複数ステップのプロセスであると思われます。

  1. 元の MSI のコピーを取得し、修正された MSI の新しいコピーをコンパイルします。
  2. 両方のインストーラーを指す新しい Wix ファイルを作成します
  3. Candle を使用して Wix ファイルを .wixobj にコンパイルし、.psp にします。
  4. 元のインストーラーと .psp の前後のスナップショットで Torch/Pyro を実行するか、代わりに MsiMsp.exe を使用します。

ここで私の質問は、レジストリの変更を Wix ファイルに単純に記述し、ステップ 1 と 4 を使用せずに直接 .msp にコンパイルできないかということです。

4

3 に答える 3

7

いいえ。パッチは、インストール可能な2つのイメージのデルタです。デルタを生成するには、差が非常に小さい場合でも、両方の画像が必要になります。

于 2010-03-19T02:41:49.807 に答える
3

はい、同じように複雑だと思われるかもしれませんが、別の方法があります。

  1. を使用して「基本バージョン」の管理者インストールを作成しますmsiexec /qn /a <msi-file> TARGETDIR=<absolute-path-of-existing-directory>(これをmakeファイルまたは他のスクリプトから実行する場合start /waitは、コマンドの前で使用します)。%BASEDIR%
  2. 上記を繰り返しますが、%UPDDIR%
  3. インストールが解凍%UPDDIR%されたので、そのフォルダのルートにある.msiファイルに変更を加えます...できればバージョン番号も変更する必要があります...
    • ファイルを交換する場合は、必ずハッシュテーブル(MsiFileHash)またはFileファイルのテーブルをバージョン情報で更新してください。
    • レジストリ値を変更するだけの場合は、それがなくても問題ありません...
  4. .pcp次に、 (パッチ作成プロパティ)ファイルを準備して、TargetImagesテーブルの1行を.msiinに、 %BASEDIR%1行UpgradedImages.msiinにポイントします。%UPDIR%
  5. 呼び出すmsimsp.exe <pcp-file> -p <absolute-path-to-desired-patch-file>

出来上がり、完了です。

さて、これが価値があるかどうかはあなただけにかかっています。

これは、値をクエリしたり、必要に応じて更新したりするために、MSIデータベースでSQLクエリを実行するいくつかのスクリプトの助けを借りて私が行っている方法です。これは完全にうまく機能し、GNU makeファイルに入れられて、多数のMSI、派生MSI、パッチ、およびダミーパッチ(テスト用)を構築します。

ここでの秘訣は、解凍された管理イメージにパッチを適用し、解凍された管理イメージmsimsp.exeの変更されていないバージョンと変更されたバージョンの間にパッチを作成するように指示することです。全体として、「手作業で」それを行うというあなたの要件に適合します。

何か説明が必要な場合に備えてコメントを書いてください。

于 2011-11-25T23:43:35.443 に答える
2

Orca および Windows Install SDK (現在はWindows SDKの一部) のその他のツールを使用して、MSP (パッチ) および MST (変換) を作成できます。ただし、このプロセスは、WiX で既に行っているプロセスよりもはるかに簡単ではない場合があります。

これが、数分間のグーグル検索で見つけられる最良の説明です。しかし、私はまだそこにもっと良いものがあるに違いないと思っています. しかし、Windows インストーラー形式に慣れている場合は、慣れるまで Orca を使っていくつかのことを試すのは非常に簡単です。

于 2010-03-19T07:20:53.420 に答える