2012-02-23 5 views
1

プロパティを使用してサービスのスタートアップの種類を設定する方法はありますか? WiXは何らかの理由で不動産を認識していません。これは難しいことではありませんが、問題を解決するには問題があります。Wix - プロパティを使用してサービス起動タイプを設定していますが、プロパティが認識されませんでしたか?

<Property Id="StartUpType" Value="auto" /> 
... 
... 
<Component Id="..." Guid="..."> 
<File Id='...' Name='...' DiskId='1' Source='...' KeyPath='yes'/> 
<ServiceInstall 
    Id="..." 
    Type="ownProcess" 
    Name="..." 
    DisplayName="..." 
    Description="..." 
    Start="[StartUpType]" 
    Account="[SERVICEACCOUNT]" 
    Password="[SERVICEPASSWORD]" 
    ErrorControl="normal" 
    Vital="yes" 
    Interactive="no" /> 
<ServiceControl Id="ServiceControl1" Stop="uninstall" Remove="both" Name="..." Wait="yes" /> 

はより正確には、このライン

Start="[StartUpType]" 

は私porpertyを認識していません。

エラー:ServiceInstall/@ Start属性の値 '[StartUpType]'は法的オプションの1つではありません: 'auto'、 'demand'、または 'disabled'です。

私の財産を認識させるための提案はありますか?ありがとう!

答えて

2

いくつかのことがありますが、フォーマットされたタイプのWindowsインストーラの[Property]置換は実行時のみ使用できます。このための唯一の回避策は、ServiceInstallテーブルの実装が異なる2つのコンポーネントで、コンポーネントは相互に排他的な条件を持ち、1つしかインストールされません。

また、レギュレータのパブリックプロパティとプライベートプロパティがUIからExecuteシーケンスまで維持されないため、Secure属性(セキュリティで保護されたカスタムパブリックプロパティとも呼ばれます)でマークされたパブリックプロパティ[PROPERTY]のみを置換に使用できます。

類似しているが異なるMSIを作成する場合にのみ、プリプロセッサのルートが機能します。インストール時間の変更点を必要とする場合は、SQL一時表を利用するカスタムアクションを使用して、相互排他的なコンポーネントルートまたは動的に生成されたServiceInstallテーブルルートに移動する必要があります。 (はるかに困難...)

+0

ありがとう。私にとっては、サービスのスタートアップタイプを変更するラジオボタンのダイアログがあります。だから、私は2つのコンポーネントのルートに行くだろうと思う。 – Jazon

+0

これには、異なるスタートアップの種類に2つの異なる.exeがあるか、2つの異なるコンポーネントによってインストールされた同じファイルが必要です – Cavaler

関連する問題