2012-09-06 60 views
2

我为我的安装项目使用WIX 3.5。如果在安装过程中更改安装目录,安装程序会坚持使用默认目录。WIX安装目录不可定制?

<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

您必须对目录使用全大写名称进行自定义。大写字母是MSI如何声明目录(和属性)为PUBLIC并因此可自定义。

+0

是的,当然...:P非常感谢! – l33t

0

感谢您的解决方案。我找不到为什么我的安装程序没有将文件复制到正确的用户指定的目录,直到我找到这篇文章。

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

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

并且您可以看到任何具有全部大写Ids的目录将只设置一次。