在wix中使用程序文件的短名称

本文关键字:文件 程序 wix | 更新日期: 2023-09-27 18:09:47

我正在使用Wix为应用程序创建msi

AppName.wxs:中设置了一个环境变量

<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)'>

这将环境变量"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中使用程序文件的短名称?

感谢

Tom

在wix中使用程序文件的短名称

您可以在MSI中将SHORTFILENAMES设置为一个值,这将强制将所有内容安装到短路径中。这是可能起作用的最接近的东西,但对于你习惯于在长格式中看到的任何路径都会产生副作用。

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

这意味着你不得不编写一个自定义操作来自己解决它。如果可能的话,我建议修复读取属性的内容以支持长路径。:(