在wix中使用Program Files的简称

我正在使用Wix为应用程序创build一个msi

在AppName.wxs中设置一个环境variables

<Component Id="MyAppEnvVar" Directory="TARGETDIR" Guid="eabcc802-6853-4db8-b827- 985db85683cf"> <Environment Id="MyAppEnv" Action="set" Name='MyApp_HOME' Part='all' System="yes" Value="[BinDir]"/> </Component> 

BinDir在这里指定:

 <Directory Id='ProgramFilesFolder' Name='PFiles'> <Directory Id='MyAppDir' Name='MyApp'> <Directory Id='ClientDir' Name='$(env.MyAppDIR)'> <Directory Id='BinDir' Name='$(var.PRODUCTVERSION)'> 

这将环境variables“MyApp_HOME”设置为C:\ Program Files(x86)\ MyAPP \ Client \ 2.0.0.0

我想要做的就是将MyApp_HOME设置为短名称,如下所示:c:\ Progra〜2 \ MyAPP \ Client \ 2.0.0.0

我已经看过SHORTFILENAMES属性,但不知道如何适应与.wxs文件。

Wix中可以使用程序文件的简称吗?

谢谢

汤姆

您可以将SHORTFILENAMES设置为MSI中的值,并强制将所有内容安装到短路径。 这是最有效的方法,但是对于你习惯以长方式观看的任何路径都会产生副作用。

Registry/@Value属性允许您使用语法[!FileId]获取具有匹配Id属性的File的短路径。 不幸的是,这不适用于Environment/@Value属性,也不适用于目录标识符。

这意味着你被困在写一个自定义的行动来解决它自己。 如果可能的话,我会建议修改读取属性的东西来代替支持长路径。 🙂