【问题标题】:Setting Wix shortcut with environment variable workingdirectory使用环境变量工作目录设置 Wix 快捷方式
【发布时间】:2012-10-26 02:27:48
【问题描述】:

我正在尝试使用以下 WorkingDirectory 在 WIX 中创建快捷方式:

<Shortcut Id="PowerShellShortcut" Name="$(var.PRODUCTNAME) Powershell Prompt" Description="$(var.PRODUCTNAME) Powershell Prompt" WorkingDirectory="%HOMEDRIVE%%HOMEPATH%" Target="[POWERSHELLEXE]" Arguments='-noexit -command "Import-Module [APPLICATIONFOLDER]Binaries\MA.dll | Out-Null"' />

当我尝试构建时,出现以下错误:

错误 1 ​​Shortcut/@WorkingDirectory 属性的值“%HOMEDRIVE%%HOMEPATH%”不是合法标识符。标识符可以包含 ASCII 字符 A-Z、a-z、数字、下划线 (_) 或句点 (.)。每个标识符都必须以字母或下划线开头。

是否有解决方法将文字字符串“%HOMEDRIVE%%HOMEPATH%”设置为快捷方式的工作目录?

【问题讨论】:

标签: wix wix3.6


【解决方案1】:

您不能在 .wxs 文件中使用像 %HOMEDRIVE% 这样的环境变量。而不是%HOMEDRIVE%%HOMEPATH%,尝试使用$(env.HOMEDRIVE)$(env.HOMEPATH)

【讨论】:

  • 不喜欢这样,因为我的 %HOMEDRIVE% 是“H:\”。 WiX 说,“Identifiers may contain ASCII characters A-Z, a-z, digits, underscores (_), or periods (.).
【解决方案2】:

根据Shortcut Table 上的文档,工作目录 (WkDir) 存储具有您想要存储到快捷方式中的值的属性的名称。该属性可能是一个 DirProperty(即,也是对目录表的引用),或者它本身可能只包含一个硬编码的字符串。如果您希望最终快捷方式具有文字文本%HOMEDRIVE%%HOMEPATH%,则将您的工作目录设置为WKDIR_HOME,这是您设置为%HOMEDRIVE%%HOMEPATH% 的属性的名称。

【讨论】:

  • 不幸的是,这并没有欺骗 WiX,所以我们回到第一条。
  • 那么我们会有两个相同的问题。我按照你的描述做了,但 WiX 将属性转换为字符串文字并给出了关于不允许 % 字符的相同错误。
  • 抱歉,我使用的是预处理器变量,而不是属性。所以我添加了一个属性&lt;Property Id="WKDIR_HOME" Value="%HOMEDRIVE%%HOMEPATH%" /&gt; 并将其添加到我的快捷方式中,如下所示:WorkingDirectory="WKDIR_HOME" 现在快捷方式的“开始于:”它显示“H:\”,这是 %HOMEDRIVE%%HOMEPATH% 的值,而不是文字文本%HOMEDRIVE%%HOMEPATH%。我想这已经足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 1970-01-01
相关资源
最近更新 更多