1

作成したアプリケーションにプラグイン (またはアドオン) をインストールする必要があります。アプリケーションのインストーラーには WiX を使用しています。私の考えでは、プラグインはアプリケーションのオプションの部分です。アプリケーションのファイルシステム構造に統合する必要がありますが、元のアプリケーションのインストーラーを制御できない人でも、後で追加することができます。だから私は、WiX の独創的なメカニズムがすべて不十分であることに気付きました。小規模/マイナー/メジャー アップデートもパッチ メカニズムも、前のフレーズで述べた前提条件に適合していないようです。したがって、私にとって最善の方法は、元のインストーラーがプラグインをインストールする場所を何らかの方法で指定するレジストリ エントリを残し、プラグイン用に別のインストーラーを構築することです。アンインストールをどのように進めるかという問題は未解決のままですが、それは後で処理できる問題です。誰かがより良いアイデアを持っていますか? 私が気付いていないWiXでこれに特化したメカニズムはありますか? アドバイスありがとう、N-Man

4

2 に答える 2

3

レジストリ キーは、これを解決する一般的な方法です。プラグイン ディレクトリを作成する Windows インストーラ中心の方法は、Component を使用してプラグイン ディレクトリを作成し、他のユーザーに Component/@Guid の ComponentSearch を使用させることです。

アプリと同時にプラグインをアンインストールすることは、アンインストールを管理する外部のブートストラップ/チェイナーなしでは困難です (おそらく不可能です)。プラグインのアンインストールをアプリケーションから完全に分離して、個別に削除できるようにする方がはるかに簡単です。

于 2009-08-27T17:27:26.847 に答える
0

したがって、私にとって最善の方法は、元のインストーラーがプラグインをインストールする場所を何らかの方法で指定するレジストリ エントリを残し、プラグイン用に別のインストーラーを構築することです。

はい、それが標準的なアプローチだと思います。メイン アプリケーションのインストーラーは、次のようにプラグインをインストールする場所に関するレジストリ エントリを残すことができます。

<Registry Id='WritePluginsLoc'
  Root='HKLM'
  Key='Software\Acme\Foo 1.x' 
  Name='PluginsLocation'
  Type='string'
  Action='write'
  Value='[PLUGINSFOLDER]' />

プラグイン インストーラーは、次のようにレジストリ エントリを取得できます。

<Property Id="PLUGINSFOLDER">
  <RegistrySearch Id='PluginsLocationSearch'
     Root='HKLM' 
     Key='Software\Acme\Foo 1.x'
     Name='PluginsLocation'
     Type='raw' />
</Property>

メインの製品と共にプラグインを自動的にアンインストールするには、カスタムのアンインストーラー exe を作成する必要があります。この exe は、プラグインの MSI 製品コードを見つける方法を知っている必要がありmsiexec /x、それぞれに対して起動します。

于 2009-08-27T14:17:43.043 に答える