gpt4 book ai didi

c# - 使用 WiX 创建现有文件夹的桌面快捷方式

转载 作者:太空狗 更新时间:2023-10-29 21:36:49 24 4
gpt4 key购买 nike

我需要使用 Wix 创建现有文件夹(不是文件)的桌面快捷方式。更详细地说,我的安装程序有一个使用 C# 编写的与其关联的 CustomAction 程序。此 CustomAction 程序创建一个名为“BSS”的文件夹,其路径由用户选择。

C:\ProgramData\MT\BSS

现在我需要使用 WiX 将桌面快捷方式放置到该文件夹​​中。但是,我遇到了一个问题,因为这个文件夹在 WiX 中没有文件夹结构。我能找到的最接近的代码如下。

<Directory Id="DesktopFolder" Name="Desktop"/>
<Directory Id="CommonAppDataFolder" Name="ProgramDataFolder"/>
<Component Id="ComponentBSStrageShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}">
<Shortcut Id="ShortcutBSStrageShortcut"
Directory="DesktopFolder"
WorkingDirectory="APPLICATIONFOLDER"
Target="[CommonAppDataFolder]/MTK/BSStrage"
Name="BSStrage"
Show="normal"/>
<RegistryValue Action="write"
Key="SOFTWARE/MTK/BackStreet"
Root="HKCU"
Type="string"
KeyPath="yes"
Value="ApplicationFolderName"/>
</Component>

当我以这种方式构建安装程序时,它实际上会在桌面上创建一个快捷方式。然而,WiX 似乎认为 BSStrage 是一个文件/应用程序,因此它在位置 C:\ProgramData\MT 中放置了一个名为 BSStrage 的假想应用程序的快捷方式。但是双击它没有帮助,因为没有可用于打开它的程序。

显然我在这里做错了。有人可以帮我解决这个问题,以便解决这个问题。请注意,我对 Wix 非常陌生(才两天),之前从未使用过它。任何代码示例都会有很大帮助。

最佳答案

我刚遇到同样的问题;似乎正在创建一个 Shortcut带有 Target 的标签表单的属性
Target="[CommonAppDataFolder]"工作正常,但试图附加子目录,例如
Target="[CommonAppDataFolder]\MTK\BSStrage"导致创建不起作用的快捷方式。

幸运的是,我发现了一个解决方案。诀窍是创建 Directory 的层次结构指向您要创建快捷方式的目录的标签,然后包含一个 Component包含 Shortcut 的标签标签,像这样:

<Directory Id="DesktopFolder" Name="Desktop"/>
<Directory Id="CommonAppDataFolder" Name="ProgramDataFolder">
<Directory Id="AppDataMTK" Name="MTK">
<Directory Id="AppDataBSStrage" Name="BSStrage">
<Component Id="ComponentBSStrageShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}">
<CreateFolder/>
<Shortcut Id="ShortcutBSStrageShortcut"
Directory="DesktopFolder"
Name="BSStrage""/>
</Component>
</Directory>
</Directory>
</Directory>

请注意,创建快捷方式时目标目录必须实际存在,否则您将遇到同样的问题:快捷方式损坏。这就是我添加 <CreateFolder/> 的原因Component 内的标签标记,在安装时创建目录。

关于c# - 使用 WiX 创建现有文件夹的桌面快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com