我试图在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>
(也尝试使用advertise = no)
链接和变量已创建,但链接类型是文件而不是文件夹 - 因此它的行为和外观都是错误的。它看起来像通用快捷方式,并且不会在点击时打开文件夹 - 我需要right-click -> go to location
转到[DOCUMENTSPATH]
文件夹。这是因为[DOCUMENTSPATH]
我使用的包含不同的环境变量,例如%LOCALAPPDATA%。
如何在wix中强制执行目标类型的快捷方式或如何在wix中扩展环境变量?
编辑:补充说明。 我正在尝试在创建快捷方式时使wix扩展环境变量(以%开头的那个,比如%appdata%),因为windows不能在快捷方式中处理好动态变量。
答案 0 :(得分:0)
将您的代码更改为此
<Component Id="SampleDir" Guid="E9EAE95A-8234-406D-950D-397956287709" Directory="DesktopFolder">
<Shortcut Id="SampleDirSC"
Name="somename"
Target="[DOCUMENTSPATH]"
WorkingDirectory="DOCUMENTSPATH"
Show="normal" />
</Component>
这是我测试代码的部分样本
<DirectoryRef Id="DesktopFolder">
<Component Id="ApplicationShortCutC" Guid="{CB93D6D1-AB98-4b45-98FF-4017EE5A0A09}">
<Shortcut Id="AppShortCutC" Name="!(wix.Product)"
Description="!(wix.ProductDesc)"
Target="[INSTALLDIR]"
WorkingDirectory="INSTALLDIR" />
<RegistryKey Root="HKCU" Key="!(wix.Manufacturer)\!(wix.Product)" Action="createAndRemoveOnUninstall">
<RegistryValue Name="ShortCutC" Type="integer" Value="1" KeyPath="yes" />
</RegistryKey>
<RemoveFolder Id="ShortCutFolder" Directory="ApplicationProgramsFolder" On="uninstall"/>
</Component>
</DirectoryRef
快捷方式元素here,表示advertise = yes忽略目标。