У меня есть потребность создать Настольный Ярлык на существующую ПАПКУ (НЕ в файл) использование Wix. Для разработки больше моя программа установщика имеет программу CustomAction записанное использование C#, связанный с ним. Эта программа 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 является файлом/приложением, таким образом, он помещает ярлык на мнимое приложение под названием BSStrage в месте C:\ProgramData\MT. Но дважды щелкая по нему справка dosen't как нет никакой программы, которая может использоваться для открытия его.
Очевидно, я делаю его неправильно здесь. Может кто-то помогать мне с этим, поэтому как, как преодолеть эту проблему. Обратите внимание, что я чрезвычайно плохо знаком с Wix (это были только два дня), и никогда не работал с ним прежде. Любой пример кода очень помог бы.
Косая черта в ярлыке / @ Target должна быть обратной косой чертой. Explorer, вероятно, интерпретирует ваш ярлык как «Запустить CommonAppDataFolder с переключателями / MTK и / BSStrage». По крайней мере, это мое первое предположение.
Я немного изменил свои требования и заставил код работать следующим образом. Изменения сейчас создаю ярлык для папки ProgramData.
<!-- Desktop Shortcut -->
<Directory Id="DesktopFolder" Name="Desktop"/>
<Directory Id="CommonAppDataFolder" Name="ProgramDataFolder"/>
<Component Id="MTDesktopShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}">
<Shortcut Id="MTShortcut"
Directory="DesktopFolder"
WorkingDirectory="APPLICATIONFOLDER"
Target="[CommonAppDataFolder]"
Name="MT"
Show="normal"/>
<RegistryValue Action="write"
Key="SOFTWARE/MT/BS"
Root="HKCU"
Type="string"
KeyPath="yes"
Value="ApplicationFolderName"/>
</Component>
Работает нормально, ярлык создает нормально. Однако есть одна проблема, поскольку он создает ярлык на рабочем столе AllUsers, а я хочу, чтобы он был создан на рабочем столе текущего пользователя. Какое изменение мне следует сделать?
Также обратите внимание, что мой установщик выполняет установку для всех пользователей, и я не вправе это изменять. Мне просто нужен способ создать этот ярлык на рабочем столе текущего пользователя, в то время как установщик все еще может выполнить установку для всех пользователей.