这是我正在尝试做的一个例子:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="MySoftware" UpgradeCode="d2192e52-f4f6-461c-9d8e-eb66067df09a">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="[Manufacturer] SetupProject1" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<!-- <Component Id="ProductComponent"> -->
<!-- TODO: Insert files, registry keys, and other resources here. -->
<!-- </Component> -->
<Component Id="CMP_NEW">
<File Id="FILE_NEW" Source="New Text Document.txt" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>
在ProgramFiles中创建的文件夹是[Manufacturer] SetupProject1而不是MySoftware SetupProject1。我做得对吗?如果没有,我该怎么办呢?
先谢谢!
答案 0 :(得分:0)
创建一个变量$(var.Manufacturer)并像这样使用它:
像这样定义:<?define Manufacturer = "MySoftware"?>
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="$(var.Manufacturer)" UpgradeCode="d2192e52-f4f6-461c-9d8e-eb66067df09a">
<Directory Id="INSTALLFOLDER" Name="$(var.Manufacturer) SetupProject1" />
那将有效.. :)
答案 1 :(得分:0)
我遇到的问题是您无法将预处理器变量设置为安装期间定义的值,例如在UI中。我正在尝试将目录名称设置为User提供的属性。
到目前为止,我看到的关键方法是使用自定义操作将Directory数据表更改为您可能引用的属性的值。只需确保为自定义操作计时,以便在正常设置目录之前不会发生,否则可能会被覆盖。
然而,我仍在寻找一些更漂亮的东西。