1

我正在使用 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 中使用程序文件的短名称?

谢谢

汤姆

4

1 回答 1

1

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

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

这意味着您被困在编写自定义操作来自己解决它。如果可能,我建议修复读取属性的内容以支持长路径。:)

于 2013-04-17T18:42:22.077 回答