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

C# 在wix中使用程序文件的短名称,c#,windows,wix,windows-installer,environment-variables,C#,Windows,Wix,Windows Installer,Environment Variables,我正在使用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="ye

我正在使用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\u HOME”设置为C:\Program Files(x86)\MyApp\Client\2.0.0

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

我已经查看了SHORTFILENAMES属性,但不确定它如何与.wxs文件相匹配

可以在Wix中使用程序文件的短名称吗

谢谢


Tom

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

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


这意味着您必须自己编写自定义操作来解决它。如果可能的话,我建议修复读取属性的东西,以支持长路径

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

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

这意味着您必须自己编写自定义操作来解决它。如果可能的话,我建议修复读取属性的东西,以支持长路径