1

この質問は存在しないと確信していますが、存在する場合は、事前に謝罪し、お知らせください.

会社から新しいインストーラー フレームワークを調査するように依頼されました。現在、Windows インストーラー 4.5 (MSI) を検討しています。必要なことはすべて実行するので、制限を調べています。私が見つけられないことの 1 つは、アクション (標準またはカスタム) をシーケンス テーブルに複数回書き込むことができるかどうかです。私が見たところ、人々はそうではありませんが、あなたができないとはどこにも言いませ

誰でもアイデアはありますか?前もって感謝します :)

編集- 独自のコードを使用して多くのインストーラー パッケージを作成し、作成した複数の DLL に対して 1 つのカスタム アクションを使用する必要がある場合があるため、カスタム アクションにとって特に重要です。さらに、特定の順序でインストール手順を実行することを強制しないフレームワークが必要です (これは任意です - 完全な世界では)。シーケンス テーブルで 1 つのアクションを複数回使用できる場合は、それができる可能性もあります。

4

2 に答える 2

2

カスタム アクションの場合は、Windows インストーラーの標準テーブルのように機能するテーブル駆動型のカスタム アクションを設計することをお勧めします。その設計では、即時のカスタム アクションが、他のすべてのアクションに対して適切な時間にスケジュールされます。たとえば、Before='RemoveFiles'またはAfter='InstallFiles'(または何でも。

即時カスタム アクションは、アクションにデータを提供する 1 つ以上のカスタム テーブルから行を読み取ります。複数の行を使用すると、より多くのデータを読み取ってアクションを「複数回」実行できます。マシンの状態を変更する必要がある場合、即時カスタム アクションは、適切なCustomActionData. この場合、延期されたカスタム アクションは、スケジュールした回数だけ実行されます。::MsiDoAction() を使用してカスタム アクションをスケジュールしますが、私は WiX ツールセットの wcautil.lib によって提供される WcaDoAction() を使用することを好みます。

この設計は、延期されたカスタム アクションについて MSI SDK に文書化されており、WiX ツールセットはすべてのカスタム アクションにパターンを使用します。これは非常に強力で、修復、パッチ適用、アンインストールなどの他のシナリオを考慮すると非常にうまく機能します。

于 2013-05-28T15:32:48.500 に答える