【发布时间】:2018-03-02 10:11:18
【问题描述】:
我正在尝试在 WIX 中做两件事:
- 创建指向特定目录的新环境变量,例如
%test%导致变量[DOCUMENTSPATH] - 在桌面上创建该文件夹的快捷方式。快捷方式必须使用相同的变量
[DOCUMENTSPATH]
使用<RegistryKey> 和<RegistryValue> 我可以创建导致变量的环境变量。
<Component Id="EnvironmentAlias" Guid="827d993f-32c0-4088-a72a-43888a5f496a">
<RegistryKey Root="HKLM" Key="SYSTEM\CurrentControlSet\Control\Session Manager\Environment">
<RegistryValue Type="string" Name="%NEW_PATH%" Value="[DOCUMENTSPATH]" Action="write"></RegistryValue>
</RegistryKey>
</Component>
这会创建快捷方式
<Component Id="SampleDir" Guid="E9EAE95A-8234-406D-950D-397956287709" Directory="DesktopFolder">
<Shortcut Id="SampleDirSC"
Name="somename"
Target="[DOCUMENTSPATH]"
Advertise="yes"
Show="normal" />
</Component>
(也尝试过用 Advertisement=no)
创建了链接和变量,但链接类型是文件而不是文件夹 - 所以它的行为和外观都是错误的。它看起来像通用快捷方式,并且不会在单击时打开文件夹 - 我需要 right-click -> go to location 才能转到 [DOCUMENTSPATH] 文件夹。这是因为我使用的 [DOCUMENTSPATH] 包含不同的环境变量,例如%localappdata%。
任何想法如何在 wix 中强制执行快捷方式的目标类型或如何在 wix 中扩展环境变量?
编辑:附加说明。 我试图在创建快捷方式时使 wix 扩展环境变量(以 % 开头的环境变量,如 %appdata%),因为 Windows 不能很好地处理快捷方式中的动态变量。
【问题讨论】: