【发布时间】:2016-05-09 18:48:45
【问题描述】:
我正在尝试创建一个安装程序,使程序在启动时为当前用户运行。我可以创建一个快捷方式,但我似乎无法放入正确的文件夹。
<!-- 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 -->
我不明白为什么这不起作用。如果我将SetDirectory 的Value 更改为"[%APPDATA]\\Microsoft\\Windows\\",则快捷方式按预期位于该Windows 文件夹中,但如果我将其更改为"[%APPDATA]\\Microsoft\\Windows\\Start Menu\\",则快捷方式不在该“开始”菜单文件夹中。我不知道 Wix 是否会尝试对“开始”菜单文件夹做一些特殊的事情,或者文件夹名称中的空格是否有问题,或者是否有其他问题。
documentation 提到 Value 使用 Formatted 语法,但它没有提到任何关于空格是一个问题的内容。此外,大多数recognized environment variables 似乎都无法使用此功能(至少我还没有弄清楚),但如果它们有效,我就不必对一半的路径进行硬编码。
如何在用户的启动文件夹中创建快捷方式?
【问题讨论】: