2017-09-18 5 views
1

Quelle est la syntaxe correcte pour faire un compagnon de fichier à un autre? J'ai beaucoup googlé mais je ne pouvais pas trouver beaucoup plus que la théorie.Comment faire un fichier config.exe un fichier compagnon de son exe dans l'installateur wix

Mon cas d'utilisation est que j'ai mis à jour la version .Net dans certains services et maintenant je mets à jour le programme d'installation aussi. À l'heure actuelle, ce fut l'approche utilisée:

<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> 

Je veux me débarrasser de util:XmlFile et voir si je pouvais en faire un fichier config fichier compagnon de l'exe.

J'ai essayé les cas suivants:

<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> 

Est-ce exact? Ou dois-je ajouter un fichier compagnon au composant .exe et non dans un composant séparé? S'il vous plaît aidez-moi avec la syntaxe ici. Merci!

Répondre

2

Vous pouvez utiliser le fichier compagnon comme ceci:

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

Merci pour votre réponse. Mais je ne peux pas faire de fichier compagnon à un fichier qui est un keypath de son composant. La définition de keypath = no devrait aider. Aussi, avec ceci, quand je mets à jour cette construction avec les changements ci-dessus, ces services où j'ai ajouté des fichiers compagnons ne redémarrent pas automatiquement. Comment devrais-je les faire redémarrer? – Atihska

+0

Oh oui, CompanionFile ne peut pas être KeyPath car il utilise le KeyPath du fichier compagnon. Je vais mettre à jour la réponse pour supprimer KeyPath. Pas à propos du service ne démarre pas. Peut-être provoqué par le 'ServiceConfig' que je n'ai jamais utilisé auparavant. –

+0

Lorsque je n'utilisais pas de fichier compagnon, cela fonctionnait correctement. Au lieu de cela, j'utilisais la balise util: xmlfile dans le fichier de configuration et en utilisant l'action setvalue. Je voulais juste éviter cela, je dois ajouter à chaque mise à niveau de la version. Faites-moi savoir si vous voulez le code pour cela, je peux le poster. – Atihska