2011-01-06 12 views
10

当社の製品には、基本的にいくつかのファイルをc:\ ourproductフォルダにコピーし、Windowsサービス "ourwindowsservice"をインストールするMSIインストーラ(WiXで書かれています)があります。動的インスタンス名を持つMSIの複数のインスタンスをインストールする

サービスの複数のインスタンスに対するサポートを追加したいと思います。それらを相互に独立してインストール/アンインストールする必要があります。例:各インスタンスには、コマンドラインパラメータとしてMSIに渡すことができる名前が必要です。

例: インスタンス "" =>はにファイルをコピー: ":\ ourproductB C"、 "としてサービスをインストール "C \ ourproductA" を、>のためにファイルをコピー= "ourwindowsserviceA" インスタンス "B" としてサービスをインストールourwindowsserviceB " ...

何か考えていますか?

Instance transformationは、あらかじめ定義された事前設定されたインスタンスのセットを必要とするようです。

ありがとうございます。

答えて

9

ServiceInstallテーブルの名前列は、書式付きの種類です。つまり、実行時にプロパティを使用して名前を駆動できます。

数年前、私は複数のインスタンスインストーラに関するブログ記事を書いていました。コメントでは、インスタンスの動的な数について誰かが尋ねて、何をする必要があるかについて話します。基本的には、UIを持ったbootstrapper.exeを書かなければならず、固有のプロパティを持つトランスフォームの作成を促進することができます。 MSI InteropにC#とWiX/DTFを使用すると、実際にはかなり可能です。私は実際にそれを行う必要性を感じなかっただけです。私はProduct、Product-1 ... Product-15に完全に満足しています。ショートカットは、フォーマットされたタイプをサポートしていないが、INSTALLDIRをモーフィングすることができ、ServiceNamesをサポートしているので、カスタムアクションによって実行する必要があります。

+0

ありがとう、Christopher!あなたのブログ記事はいつでもオンラインですか? – Max

+0

http://blog.deploymentengineering.com/2006/10/multiple-instance-msis-and.htmlとhttp://blog.deploymentengineering.com/2008/03/installshield-2009-beta-part-i.html –

+0

+1にクリスの答え。ところで、私は上記のブログ記事のコメントで複数のインスタンスについて質問した人の一人でした。 :)ありがとう、クリス、それは私を助けてくれました!後で、私はこの分野で自分の経験を共有しました:http://ysdevlog.blogspot.com/2008/12/multiple-instance-installations-and.html。パッチを使ったアップグレードについても考えているなら、最後まで読むことは興味深く、最後のコメントで共有しているリンクに特に注意してください。がんばろう! –

2

申し訳ありませんが、Windows Installerは動的インスタンスをサポートしていません。複数のインスタンスをサポートする商用ツールでも、最初からインスタンスを定義する必要があります。あなたのケースでは、インストーラを生成する前にインスタンスA、B、Cなどを手動で定義する必要があります。

これは、ProductCode(特にProductCode)によって製品が識別されているため、IDを変更する変換をMSIに適用する必要があるためです。特別なツールやWindowsインストーラAPIが必要なので、その場で変換を生成するのはかなり難しいですが、通常はユーザーのマシン上には見つかりません。

しかし、Christopher氏のように、インストーラプロパティを使用して動的インスタンスをシミュレートすることができます。これらのプロパティは、インストールUIまたはカスタムブートストラップによって設定できます。

関連する問題