2010-10-06 10 views
0

Nous avons besoin d'installer le même logiciel dans plusieurs répertoires sur la même machine. Je veux installer le logiciel en utilisant un fichier batch. J'ai de la difficulté à utiliser la variable que j'ai passée en tant que nom de répertoire. (J'utilise VS 2010).VS2010 Wix proj - Comment passer une variable de ligne de commande à utiliser comme nom de répertoire

Code de lot de fichier msiexec/i "SetupProjectTestMultiInstalls.msi" CLIENT = "TESTCUSTOMER"

Cependant, le chemin créé est C: \ Program Files \ SetupProjectTestMultiInstalls [CLIENT] comme opposez ce que je veux C : \ Program Files \ SetupProjectTestMultiInstalls \ TESTCUSTOMER

Voici mon Wix xml

<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" /> 
<?define MYVARIABLE = "Temp" ?> 
<?define FORMDIR = "$(var.SolutionDir)WindowsFormsApplication1\bin\Debug\"?> 

<Condition Message="CUSTOMER variable must be set in the command line"> 
    CUSTOMER 
</Condition> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
      <Directory Id="INSTALLLOCATION" Name="SetupProjectTestMultiInstalls"> 
     <Directory Id="Customer" Name="[CUSTOMER]"> 
     <Component Id="ConfigFiles" Guid ="4fdbee76-d149-11df-aa02-05feded72085"> 
     <File Id="WindowsFormsApplication1.exe" DiskId ="1" Vital="yes" ReadOnly="no" 
       Name="WindowsFormsApplication1.exe" 
       Source ="$(var.FORMDIR)WindowsFormsApplication1.exe" /> 
     </Component> 
      </Directory> 
     </Directory> 
    </Directory> 
</Directory> 
    <Feature Id="ProductFeature" Title="SetupProjectTestMultiInstalls" Level="1"> 
     <ComponentGroupRef Id="Product.Generated" /> 
    <ComponentRef Id="ConfigFiles" /> 
    </Feature> 
</Product> 

Toutes les idées

Merci

Jake

Répondre

0

Vous pouvez faire quelque chose comme ceci à l'aide INSTALLDIR au lieu de CLIENT passer l'emplacement de la ligne de commande:

msiexec/i "SetupProjectTestMultiInstalls.msi" INSTALLDIR = "C: \ Program Files \ SetupProjectTestMultiInstalls \ TESTCUSTOMER"

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramFilesFolder"> 
    <Directory Id="INSTALLDIR" Name="."> 
     <Component Id="ConfigFiles" Guid ="4fdbee76-d149-11df-aa02-05feded72085"> 
     <File Id="WindowsFormsApplication1.exe" DiskId ="1" Vital="yes" ReadOnly="no" 
      Name="WindowsFormsApplication1.exe" 
      Source ="$(var.FORMDIR)WindowsFormsApplication1.exe" /> 
     </Component> 
    </Directory> 
    </Directory> 
</Directory> 

Cependant, je ne pense pas que vous pouvez exécuter le programme d'installation plusieurs fois pour installer le logiciel à des endroits différents. Si l'identifiant du produit est déjà utilisé, il effectuera probablement une réparation au lieu d'une nouvelle installation.