2017-09-18 14 views
1

ファイルコンパニオンを別のものにする正しい構文は何ですか?私はたくさんのグーグルで探検したが、理論のほかにはそれほど多くを見つけることができなかったconfig.exeファイルをwixインストーラのexeのコンパニオンファイルにする方法

私の使用例は、一部のサービスで.Net版を更新したので、今ではインストーラも更新しています。現在のところ、これは使用されているアプローチでした:

<Component Id="cmp123" Guid="{guid1}"> 
       <File Id="fileid1" KeyPath="yes" Source="$(var.Dir1)\Service1.exe" />     
       <ServiceInstall Id="ServiceInstall1" 
           Type="ownProcess" 
           Name="SCService1" 
           DisplayName="SCService1" 
           Description="SCService1" 
           Start="auto" 
           Account="NT Authority\NetworkService" 
           ErrorControl="normal" 
           Vital="yes" > 
       <util:ServiceConfig FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="none" ResetPeriodInDays="1" /> 
       <ServiceConfig DelayedAutoStart="yes" OnInstall="yes" OnReinstall="yes" /> 
       </ServiceInstall> 
       <ServiceControl Id="ServiceControlService1" Name="SCService1" Start="install" Stop="uninstall" Remove="uninstall" Wait="no" /> 
      </Component> 

      <Component Id="cmp456" Guid="{guid2}"> 
       <File Id="file2" KeyPath="yes" Source="$(var.Dir1)\Service1.exe.config" /> 
       <util:XmlFile Id="UpdateDotNetVersion" 
          File="[#file2]" 
          Action="setValue" 
          Name="sku" 
          Value=".NETFramework,Version=v4.6.2" 
          ElementPath="configurat/start/supportedRuntime" />     
      </Component> 

私はutil:XmlFileを取り除くと、私はこの設定は、exeファイルのコンパニオンファイルをファイル作ることができるかどうかを取得します。

私は、次の例を試してみました:

<Component Id="cmp123" Guid="{guid1}"> 
        <File Id="fileid1" KeyPath="yes" Source="$(var.Dir1)\Service1.exe" />     
        <ServiceInstall Id="ServiceInstall1" 
            Type="ownProcess" 
            Name="SCService1" 
            DisplayName="SCService1" 
            Description="SCService1" 
            Start="auto" 
            Account="NT Authority\NetworkService" 
            ErrorControl="normal" 
            Vital="yes" > 
        <util:ServiceConfig FirstFailureActionType="restart" SecondFailureActionType="restart" ThirdFailureActionType="none" ResetPeriodInDays="1" /> 
        <ServiceConfig DelayedAutoStart="yes" OnInstall="yes" OnReinstall="yes" /> 
        </ServiceInstall> 
        <ServiceControl Id="ServiceControlService1" Name="SCService1" Start="install" Stop="uninstall" Remove="uninstall" Wait="no" /> 
       </Component> 

       <Component Id="cmp456" Guid="{guid2}"> 
        <File Id="file2" KeyPath="yes" Source="$(var.Dir1)\Service1.exe.config" /> 
         <File CompanionFile="cmp123" /> 
       </Component> 

は、この正しいですか?または、コンパニオンファイルを別のコンポーネントではなく.exeコンポーネントに追加する必要がありますか?ここで構文を教えてください。 ありがとう!

答えて

2

あなたはこのようにコンパニオンファイルを使用することができます。

<Component Id="cmp456" Guid="{guid2}"> 
    <File Id="file2" Source="$(var.Dir1)\Service1.exe.config" CompanionFile="fileid1" />      
</Component> 
+0

感謝のお返事。しかし、コンポーネントのキーパスであるファイルにコンパニオンファイルを作成することはできません。 keypath = noを設定すると役立ちます。また、これで、上記の変更でこのビルドにアップグレードすると、コンパニオンファイルを追加したサービスは自動的に再起動しません。どのように再起動するのですか? – Atihska

+0

ああ、CompanionFileは、コンパニオンファイルのKeyPathを使用しているため、KeyPathにすることはできません。 KeyPathを削除する答えを更新します。サービスが開始していないかどうか。私がこれまで使用したことのない 'ServiceConfig'によって引き起こされるかもしれません。 –

+0

コンパニオンファイルを使用していないときに正常に動作しました。その代わりに、私はutil:xmlfileタグを設定ファイルに使用していて、setvalueアクションを使用していました。私はちょうど私がすべてのバージョンアップグレードで追加しなければならないことを避けたいと思った。あなたがそのコードを望むなら私に教えてください、私はそれを投稿することができます。 – Atihska

関連する問題