Wix,如何根据InstanceID

时间:2017-07-12 12:49:18

标签: wix

我正在了解Wix安装程序,并要求msi安装多次。

我的问题是如何将WWTagNet.Service中的INSTALLFOLDER更改为WWTagNet.Service1,WWTagNet.Service2,WWTagNet.Service3,而无需在msiexec的命令行中指定InstallDir?

我使用了InstanceTransforms元素并定义了三个实例,并添加了MultiInstance =" yes"一些组件。

我想我认为我指定为INSTALLFOLDER的目录会根据InstanceID自动更改。

我想将InstanceID附加到INSTALLFOLDER,而不是指定为msiexec的命令行。

我已尝试使用以下内容,但似乎无效。

<SetProperty Id="INSTALLFOLDER" After="LaunchConditions" Sequence="first" Value="[TARGETDIR][ProgramFilesFolder][Company][INSTANCEID]"><![CDATA[NOT Installed]]></SetProperty>

这些是我的product.wxs文件的相关部分。

<Property Id="INSTANCEID" Value="0" />
<InstanceTransforms Property="INSTANCEID">
    <Instance Id="I01" ProductCode="a4d890ed-e624-438e-8fd9-938cd7aa06be" ProductName="Service1" />
    <Instance Id="I02" ProductCode="17c81aa7-0524-44f7-a2ea-3a618c9ceb6b" ProductName="Service2" />
    <Instance Id="I03" ProductCode="8d858d7c-f66c-4ccb-9427-77b5c426c3e1" ProductName="Service3" />
</InstanceTransforms>

<Feature Id="ProductFeature" Title="WWTagNet.Service" Level="1">
    <ComponentGroupRef Id="ProductComponents" />
    <ComponentGroupRef Id="Modules" />
</Feature>

<Fragment>  
    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
    <Directory Id="COMPANYFOLDER" Name="W W Wood Products Inc">
      <Directory Id="INSTALLFOLDER" Name="WWTagNet.Service">
        <Directory Id="MODULESFOLDER" Name="Modules" />
      </Directory>
    </Directory>
        </Directory>
    </Directory>
</Fragment>

<Fragment>

    <ComponentGroup Id="Modules" Directory="MODULESFOLDER">
    <!--Install some files-->
    </ComponentGroup>

    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
    <!--Install some files-->
    </ComponentGroup>

</Fragment>

1 个答案:

答案 0 :(得分:1)

以下似乎对我有用。猜猜属性需要一个默认值,然后可以在LaunchConditions

期间更改
<Property Id="COMPANYFOLDER" Value="W W Wood Products Inc"/>
<Property Id="INSTALLERFOLDER" Value="WWTagNet.Service"/>
<SetProperty Id="COMPANYFOLDER" After="LaunchConditions" Value="[ProgramFilesFolder]\W W Wood Products Inc"/>
<SetProperty Id="INSTALLFOLDER" After="LaunchConditions" Value="[COMPANYFOLDER]\[ProductName]"/>