【问题标题】:WIX installation directory not customizable?WIX 安装目录不可自定义?
【发布时间】:2012-09-06 14:26:31
【问题描述】:

我正在为我的设置项目使用 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 属性确实已更改。

问:我的软件怎么可能安装到默认目录中?

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      你可以看到所有ID全部大写的目录只会被设置一次。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多