我正在使用VS 2010创建一个由Wix安装的程序,并且已经准备好product.wxs。
在我的wxs文件中,我有类似以下的目录定义:
<SetDirectory Id="INSTALLFOLDER" Value="[WindowsVolume]Myapp" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLFOLDER" Name="Myapp">
<Directory Id="Myapp_Installer_Dir" Name="Myapp">
<Directory Id="BIN" Name="Bin" />
<Directory Id="ICONS" Name="Icons" />
</Directory>
</Directory>
</Directory>
然后我得到了这些文件安装定义:
<DirectoryRef Id="Myapp_Installer_Dir">
<Component Id="INSTALLER_Myapp" Guid="{94F18477-8562-4004-BC6F-5629CC19E4CB}" >
<File Source="$(var.Myapp.TargetPath)" KeyPath="yes"/>
</Component>
</DirectoryRef>
<DirectoryRef Id="BIN">
<Component Id="INSTALLER_Data" Guid="{545FB5DD-8A52-44D7-898E-7316E70A93F5}" >
<File Source="$(var.Data.TargetPath)" KeyPath="yes"/>
</Component>
...
它以这种方式继续。还定义了“图标”目录的文件。
我还使用了WixUI_InstallDir对话框集,并且也得到了以下这些行:
<Property Id="WIXUI_INSTALLDIR" Value="Myapp_Installer_Dir" />
<UIRef Id="WixUI_InstallDir" />
问题是,当用户安装程序并更改安装文件夹的值时,“ Bin”和“ Icons”文件安装到了正确的路径,但是Myapp目标安装到了在以下位置定义的修复位置:开始作为默认安装路径。
为什么只将bin文件和图标文件安装到用户想要的正确文件夹中,而myapp目标却没有?
我终于解决了问题。经过一段时间的搜索,我发现了这个文档:
相关部分:“目录ID必须全为大写字符,因为它必须从UI传递到执行序列才能生效。”
正如您在我的代码中看到的那样:“ Myapp_Installer_Dir”不满足此条件。
将其更改为“ MYAPPINSTALLERDIR”后,一切正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句