Wix在用户启动文件夹中创建快捷方式

时间:2016-05-04 17:56:24

标签: wix startup

我正在尝试创建一个安装程序,使程序在启动时为当前用户运行。我可以创建一个快捷方式,但我似乎无法放入正确的文件夹。

<!-- 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的{​​{1}}更改为SetDirectory,则快捷方式位于该文件夹中,但如果我将其更改为"[%APPDATA]\\Microsoft\\Windows\\",则快捷方式不在那个开始菜单文件夹。我不知道Wix是否尝试使用“开始”菜单文件夹执行某些特殊操作,或者文件夹名称中是否存在空格问题,或者是否为其他内容。

documentation提到"[%APPDATA]\\Microsoft\\Windows\\Start Menu\\"使用Formatted语法,但没有提及任何有关空格的问题。此外,大多数recognized environment variables似乎不适用于此(至少我没有想到它),但如果这些工作,我将不必硬编码一半的路径。

如何在用户的启动文件夹中创建快捷方式?

1 个答案:

答案 0 :(得分:0)

为什么不直接使用StartupFolder-property?通过这种方式,您不必手动创建手动创建路径的所有可能性。

关于你为什么不工作的问题:我没有具体的答案,但你可以检查:

  • 安装的日志文件报告
  • 如果在两种情况下都正确安装了组件。