6

WiX インストーラーに ServiceInstall コンポーネントがあり、MSI に渡されるパラメーターに応じて auto または demand を開始する必要があります。

したがって、問題の Xml 要素は

<ServiceInstall Vital="yes"
     Name="My Windows Service"
     Type="ownProcess"
     Account="[SERVICEUSERDOMAIN]\[SERVICEUSERNAME]"
     DisplayName="My Service"
     Password="[SERVICEUSERPASSWORD]"
     Start="demand"
     Interactive="no"
     Description="Something interesting here"
     Id="Service"
     ErrorControl="ignore"></ServiceInstall>

WiX は Start 属性にパラメータを使用することを許可しないため、条件付きでコンポーネントを完全にサプリケートすることに固執しています。

<Component Id="ServiceDemand"
                 Guid="{E204A71D-B0EB-4af0-96DB-9823605050C7}" >
        <Condition>SERVICESTART="demand"</Condition>    
...

コンポーネント全体を完全に複製し、開始の設定と条件を変更します。

よりエレガントなソリューションを知っている人はいますか? 開始の属性を除いてまったく同じことを行う 2 つのコンポーネントを維持する必要がない場所は?

4

2 に答える 2

6

ServiceInstall テーブルの Start フィールドはフォーマットされていないため、プロパティに入力した内容は機能しません。このリンクには、それを解決するための役立つ提案がいくつかあります: ServiceInstall - Start element。投稿者も同じ症状だったようです。彼らが提供する私のお気に入りの提案は、Service Install テーブルの Start 要素の値を変更する InstallServices アクションの前に実行されるカスタム アクションを作成することです。

更新: 推奨サイトへのリンクを変更しました。

于 2010-03-23T17:32:21.343 に答える