VS2010 Wix proj - 如何传递命令行变量以用作目录名

时间:2010-10-06 16:47:41

标签: visual-studio wix

我们要求在同一台机器上的多个目录中安装相同的软件。我想使用批处理文件安装软件。我使用我传入的变量作为目录名称时遇到困难。 (我正在使用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>

任何想法

由于

杰克

1 个答案:

答案 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,那么它可能会进行修复而不是全新安装。