WIX安装目录不可自定义?

时间:2012-09-06 14:26:31

标签: wix windows-installer

我正在使用WIX 3.5作为我的安装项目。如果在安装期间更改安装目录,则安装程序会坚持使用默认目录。

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="LocalAppDataFolder" Name="AppData">
    <Directory Id="InstallationDir" Name="MyApp" />
  </Directory>
</Directory>
...
<DirectoryRef Id="InstallationDir">
   ... component + files ...
</DirectoryRef>
...
<UI>
   <Property Id="WIXUI_INSTALLDIR" Value="InstallationDir" />
   <UIRef Id="WixUI_InstallDir" />
   <UIRef Id="WixUI_ErrorProgressText" />
</UI>

<CustomAction Id="SetARPINSTALLLOCATION" Property="ARPINSTALLLOCATION" Value="InstallationDir" />
<InstallExecuteSequence>
   <Custom Action="SetARPINSTALLLOCATION" After="InstallValidate" />
</InstallExecuteSequence>

我尝试了升级(我总是更改产品代码)和卸载/安装。同样的问题! 如果我运行msiexec /L*v log.txt /i Setup.msi,日志会告诉我InstallationDir属性确实已更改。

问:我的软件如何安装到默认目录中?

2 个答案:

答案 0 :(得分:2)

您必须使用全大写名称才能自定义目录。大写是MSI如何将目录(和属性)声明为PUBLIC,因此可以自定义。

答案 1 :(得分:0)

感谢您的解决方案。在找到这篇文章之前,我无法弄清楚为什么我的安装程序没有将文件复制到正确的用户指定目录。

我只想强调,如果您的安装程序将文件复制到INSTALLDIR下的子目录,那么当用户通过自定义安装对话框更改INSTALDIR时,它们的ID不能全部为大写或者不会更改。您可以使用

验证
msiexec /i your_installer.msi /l*v log.log

你可以看到任何包含所有大写ID的目录都只会被设置一次。