Wix создать ярлык в пользовательской папке автозагрузки
Я пытаюсь создать установщик, который запускает программу при запуске для текущего пользователя. Я могу создать ярлык, но я не могу поместить его в нужную папку.
<!-- some wix stuff -->
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<!-- more wix stuff -->
<Directory Id="TARGETDIR" Name="SourceDir">
<!-- more directory stuff -->
<Directory Id="UserStartupFolder"/>
</Directory>
<SetDirectory Id="UserStartupFolder" Value="[%APPDATA]\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\"/>
<!-- more wix stuff -->
<DirectoryRef Id="UserStartupFolder">
<Component Id="StartupFolderShortcut" Guid="MyGUID">
<Shortcut Id="StartupFolderShortcut" Name="MyShortcut" Description="$(var.description)" Target="[#MainExecutable]" WorkingDirectory="INSTALLFOLDER"/>
<RegistryValue Root="HKCU" Key="Software\$(var.companyDisplayName)\$(var.projectDisplayName)\UserStartupItem" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<!-- more wix stuff -->
Я не понимаю, почему это не работает. Если я изменю Value
из SetDirectory
в "[%APPDATA]\\Microsoft\\Windows\\"
ярлык находится в той папке Windows, как и ожидалось, но если я изменю его на "[%APPDATA]\\Microsoft\\Windows\\Start Menu\\"
ярлык не находится в этой папке меню Пуск. Я не знаю, пытается ли Wix сделать что-то особенное с папкой меню "Пуск", или есть проблема с пробелом в имени папки, или это что-то еще.
В документации упоминается, что Value
использует синтаксис Formatted, но в нем ничего не говорится о пробелах. Кроме того, большинство распознанных переменных среды, похоже, не работают с этим (по крайней мере, я не понял этого), но если бы они работали, мне не пришлось бы жестко программировать половину пути.
Как создать ярлык в папке автозагрузки пользователя?
1 ответ
Почему бы не использовать непосредственно StartupFolder
-свойство? Таким образом, вам не придется возиться со всеми шансами создания путей вручную.
Что касается вашего вопроса о том, почему это не работает: у меня нет конкретного ответа, но вы можете проверить:
- О чем сообщает журнал установки
- Если компонент установлен в обоих случаях правильно.