2

私が使用しているブートストラップ システムの一部として、次の方法で呼び出される WiX を使用して MSI を作成しています。

msiexec /i product.msi WEBSITENAME="Default Web Site" PORT="80"

WEBSITENAME および PORT パラメーターは、私が使用しているブートストラップ システムの初期の部分として作成された Web サイトとポートの名前を示します。*.wxs ファイル内で、渡されたこれらのパラメーターを使用して Web サイトへの「参照」を取得し、同じ Web サイトの下に追加の Web アプリケーション、仮想ディレクトリなどを作成できるようにしたいと考えています。

これは、既存の Web サイト名とポートを「ハードコーディング」することで実現できました。

<!-- Reference existing Default Web Site at port 80 -->
<iis:WebSite Id="DefaultWebSite" Description="Default Web Site">
    <iis:WebAddress Id="MySiteWebAddress" Port="80"/>
</iis:WebSite>

<!-- Reference existng Default Application Pool -->
<iis:WebAppPool Id="DefaultApplicationPool" Name="DefaultAppPool">
</iis:WebAppPool>

次に、これらのハードコードされた値を使用して、以下に仮想ディレクトリを作成します

<iis:WebVirtualDir Id="MyVirtualDir" Alias="Images" Directory="ImagesDirectory" WebSite="DefaultWebSite">
    <iis:WebApplication Id="MyWebSiteApplication" Name="ImagesWebSite" WebAppPool="DefaultApplicationPool"/>
</iis:WebVirtualDir>

ここでやりたいことは、ハード コードされた "既定の Web サイト" を、コマンド ラインに渡された値に置き換えることです。

これは可能ですか?もしそうなら、どのように?プロパティの使用についていくつか読んだことがありますが、ハードコードされた文字列をプロパティに置き換える方法がわかりません。どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

4

WiX にプロパティとして解決させるには、プロパティの名前を角括弧で囲む必要があります。例えば:

<iis:WebAppPool Id="WebAppPool" Name="[WEB_APP_POOL_NAME]" Identity="other" User="WebAppPoolUser" ManagedRuntimeVersion="v4.0" ManagedPipelineMode="Integrated"/>

<iis:WebSite Id="DefaultWebSite" Description="[WEBSITE_NAME]" Directory="INSTALLLOCATION" AutoStart="yes" StartOnInstall="yes">
  <iis:WebAddress Id="AllUnassigned" Port="[WEBSITE_PORT]" Header="[WEBSITE_HEADER]"/>
  <iis:WebApplication Id="Application" Name="App" WebAppPool="WebAppPool" />
</iis:WebSite>

ドキュメント で説明されているように、「ディレクトリ」属性はすでに自動的に解決されるため、括弧は必要ありません。

于 2013-10-14T07:38:32.717 に答える