我们要求在同一台机器上的多个目录中安装相同的软件。我想使用批处理文件安装软件。我使用我传入的变量作为目录名称时遇到困难。 (我正在使用VS 2010)。
批处理文件代码 msiexec / i“SetupProjectTestMultiInstalls.msi”CUSTOMER =“TESTCUSTOMER”
然而,创建的路径是 C:\ Program Files \ SetupProjectTestMultiInstalls [CUSTOMER] 反对我想要的东西 C:\ Program Files \ SetupProjectTestMultiInstalls \ TESTCUSTOMER
这是我的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>
任何想法
由于
杰克
答案 0 :(得分:0)
您可以使用INSTALLDIR而不是CUSTOMER从命令行传递位置来执行此类操作:
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>
但是,我不认为你可以多次运行安装程序将软件安装到不同的地方。如果已经使用了产品ID,那么它可能会进行修复而不是全新安装。