在WIX中创建使用环境变量的文件夹的快捷方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在WIX中创建使用环境变量的文件夹的快捷方式相关的知识,希望对你有一定的参考价值。

我想在WIX中做两件事:

  • 创建指向特定目录的新环境变量,例如%test%导致变量[DOCUMENTSPATH]
  • 在桌面上创建该文件夹的快捷方式。快捷方式必须使用相同的变量[DOCUMENTSPATH]

使用<RegistryKey><RegistryValue>我可以创建导致变量的环境变量。

<Component Id="EnvironmentAlias" Guid="827d993f-32c0-4088-a72a-43888a5f496a">
<RegistryKey  Root="HKLM" Key="SYSTEMCurrentControlSetControlSession ManagerEnvironment">
<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>

(也试过广告=否)

链接和变量已创建,但链接类型是文件而不是文件夹 - 因此它的行为和外观都是错误的。它看起来像通用快捷方式,并没有打开文件夹点击 - 我需要right-click -> go to location[DOCUMENTSPATH]文件夹。这是因为我使用的[DOCUMENTSPATH]包含不同的环境变量,例如%LOCALAPPDATA%。

任何想法如何在wix中强制执行目标类型的快捷方式或如何在wix中扩展环境变量?

编辑:补充说明。我在创建快捷方式时尝试使wix扩展环境变量(以%开头的那个,比如%appdata%),因为windows不能在快捷方式中处理好动态变量。

答案

将您的标记更改为此

<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忽略了目标。

Sample code

以上是关于在WIX中创建使用环境变量的文件夹的快捷方式的主要内容,如果未能解决你的问题,请参考以下文章

Wix 为所有用户/每台机器创建非广告快捷方式

使用 WiX 自定义操作在安装文件夹中创建文件

如何在 D 上的 Wix 中创建目录:

如何使用 wix 3.8 安装程序在 windows 文件夹中创建文件夹

如何在WIX中创建自定义默认安装文件夹?

在 Snowflake UI 中创建环境变量文件