【问题标题】:Wix create shortcut in user startup folderWix 在用户启动文件夹中创建快捷方式
【发布时间】: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 -->

我不明白为什么这不起作用。如果我将SetDirectoryValue 更改为"[%APPDATA]\\Microsoft\\Windows\\",则快捷方式按预期位于该Windows 文件夹中,但如果我将其更改为"[%APPDATA]\\Microsoft\\Windows\\Start Menu\\",则快捷方式不在该“开始”菜单文件夹中。我不知道 Wix 是否会尝试对“开始”菜单文件夹做一些特殊的事情,或者文件夹名称中的空格是否有问题,或者是否有其他问题。

documentation 提到 Value 使用 Formatted 语法,但它没有提到任何关于空格是一个问题的内容。此外,大多数recognized environment variables 似乎都无法使用此功能(至少我还没有弄清楚),但如果它们有效,我就不必对一半的路径进行硬编码。

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

【问题讨论】:

    标签: wix startup


    【解决方案1】:

    为什么不直接使用StartupFolder-property?这样您就不必费力地手动创建路径。

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

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

    【讨论】:

    • 这就是我想做的,我试过StartupFolder,但它指的是所有用户的启动文件夹,这不是我想要的。
    • 那么您可能已经按照链接描述中的说明设置了ALLUSERS-property。您还可以尝试:在SetDirectory-元素上添加属性Sequence="ui"。默认值为"both",它也应该尝试在ExecuteSequence 中设置它,afaik,它在机器上下文中运行。日志文件有什么启示吗?编辑:也许还明确设置 Shortcut-element 的 Directory-attribute?
    • 另一种可能性:使用WIX_DIR_ALTSTARTUP 提供的Wix' OSInfo custom actions 属性。对我来说,它似乎试图在机器上下文中创建快捷方式,因此在某些目录不可用的AllUsers-目录中。
    • 并且,只是为其他用户添加:可能是目录结构尚未完全构建在Directory-表中。定义结构应确保目录存在,因此还要在所需文件夹中创建快捷方式。
    • 之所以将快捷方式放在所有用户的目录而不是当前用户的目录中,是因为您的 InstallScope="perMachine"。将其更改为 InstallScope="perUser"。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2016-12-30
    • 1970-01-01
    • 2012-10-29
    • 2016-07-14
    • 1970-01-01
    相关资源
    最近更新 更多