【问题标题】:Creating shortcut to folder in WIX that uses environmental variable在使用环境变量的 WIX 中创建文件夹的快捷方式
【发布时间】: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 -&gt; go to location 才能转到 [DOCUMENTSPATH] 文件夹。这是因为我使用的 [DOCUMENTSPATH] 包含不同的环境变量,例如%localappdata%。

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

编辑:附加说明。 我试图在创建快捷方式时使 wix 扩展环境变量(以 % 开头的环境变量,如 %appdata%),因为 Windows 不能很好地处理快捷方式中的动态变量。

【问题讨论】:

    标签: c# wix


    【解决方案1】:

    把你的标签改成这个

    <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

    【讨论】:

    • 对不起,我的错。我在实验过程中复制了我的标签。我正在试验如果添加广告=是会有所帮助。这显然不能解决我的问题 - 我将在一秒钟内用更多图片更新原始问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2016-05-15
    相关资源
    最近更新 更多