如何在用户桌面文件夹上创建快捷方式 [英] How can I create a shortcut on the Users Desktop folder

查看:29
本文介绍了如何在用户桌面文件夹上创建快捷方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据 craigster 更新了完整的 Wix 项目

Updated with Complete Wix Project as per craigster

<?xml version="1.0" encoding="UTF-8"?>
<?define SourceDir = "C:UsersBillSmithDocumentsVisual Studio 2015ProjectsAISAISinDebug" ?>
<?define icon = "C:UsersBillSmithDocumentsVisual Studio 2015ProjectsAISAISinDebug1Password.ico" ?>
<?define DesktopFolder = "H:Desktop" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">  
    <Product Id="*" Name="APS" Language="1033" Version="1.3.0.0" Manufacturer="SS" UpgradeCode="890c447c-5a09-4abb-9b01-fadf5e64aad5">
      <Package Id="*" InstallerVersion="200" Compressed="yes" InstallScope="perMachine"
        Description="APS 1.2"
        Comments="APS will assist you with changing your password with a single click!"
        Manufacturer="SS"
        InstallPrivileges="elevated"
        Platform="x86" />

      <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
      <MediaTemplate EmbedCab="yes" />

      <Feature Id="ProductFeature" Title="AutomatedIDSystemInstaller" Level="1">
        <ComponentGroupRef Id="ProductComponents" />
      </Feature>
    </Product>

    <Fragment>
      <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
          <Directory Id="INSTALLFOLDER" Name="APS" />
        </Directory>
      </Directory>
    </Fragment>
    <Fragment>
      <DirectoryRef Id="TARGETDIR">
        <Directory Id="DesktopFolder" />
      </DirectoryRef>
      <Icon Id="Password.ico" SourceFile="$(var.SourceDir)1Password.ico" />
      <Property Id="ARPPRODUCTICON" Value="Password.ico" />
    </Fragment>

  <!-- The casing of 'ANOTHERLOCATION' and 'WindowsVolume' is very important here.
     Replace 'MyNewDir' with the correct name of the folder you want on
     WindowsVolume.
-->
    <SetDirectory Id="DesktopFolder" Value="H:Desktop" />


    <!--<Fragment>
    <Component Id="DesktopShortcut" Directory="APPLICATIONFOLDER" Guid="*">
      <RegistryValue Id="RegShortcutDesktop" Root="HKCU"
              Key="SOFTWAREAPSsettings" Name="DesktopSC" Value="1"
              Type="integer" KeyPath="yes" />
      <Shortcut Id="desktopSC" Target="[APPLICATIONFOLDER]APS.exe"
              Directory="DesktopFolder" Name="APS"
              IconIndex="0"
              WorkingDirectory="APPLICATIONFOLDER" Advertise="no"/>
    </Component>
  </Fragment>-->

    <Fragment>
      <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
        <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
        <!-- <Component Id="ProductComponent"> -->
        <!-- TODO: Insert files, registry keys, and other resources here. -->
        <!-- </Component> -->
        <!--<Component Id="ProductComponents">
        <File Source="$(var.AutomatedIDSystem.TargetPath)" KeyPath="yes">
          <Shortcut Id="APSShortcut" 
                    Name="APS"
                    Advertise="yes" 
                    Description="1-Click to Change all your passwords!" 
                    WorkingDirectory="INSTALLFOLDER" 
                    ShortName="APS"                      
                    Directory="DesktopFolder"/>
        </File>
      </Component>-->


        <Component Guid="{27E3322C-C85D-4451-A06D-21B524878CA0}">

          <File Source="$(var.AutomatedIDSystem.TargetPath)" KeyPath="yes">

            <Shortcut Id="APSShortcut"
                      Name="APS"
                      Advertise="yes"
                      Description="1-Click to Change all your passwords!"
                      WorkingDirectory="INSTALLFOLDER"
                      ShortName="APS"
                      Directory="DesktopFolder" Icon="Password.ico" IconIndex="0" />
          </File>
        </Component>
        <Component Id="HtmlAgilityPack.dll" Guid="{119C78DC-EFE5-4C84-9583-17F3DE341EFC}">
          <File Id="HtmlAgilityPack.dll" Source="$(var.SourceDir)HtmlAgilityPack.dll" KeyPath="yes" />
        </Component>
        <Component Id="Microsoft.VisualBasic.PowerPacks.Vs.dll" Guid="{D6DBE101-004B-4383-A5F5-7BF16EB0C0FC}">
          <File Id="Microsoft.VisualBasic.PowerPacks.Vs.dll" Source="$(var.SourceDir)Microsoft.VisualBasic.PowerPacks.Vs.dll" KeyPath="yes" />
        </Component>
        <Component Id="rtools_setup_x64.exe" Guid="{622D3FCF-E3A0-4A12-99B0-E9D7F879CB16}">
          <File Id="rtools_setup_x64.exe" Source="$(var.SourceDir)
tools_setup_x64.exe" KeyPath="yes" />
        </Component>
        <Component Id="AutomatedIDSystem.application" Guid="{DB61CF4D-E785-44FD-BB95-D19F7D1619FB}">
          <File Id="AutomatedIDSystem.application" Source="$(var.SourceDir)APS.application" KeyPath="yes" />
        </Component>
        <Component Id="AutomatedIDSystem.exe.config" Guid="{3E1CD5E7-1AF7-47AF-9FE3-30CEC56EF950}">
          <File Id="AutomatedIDSystem.exe.config" Source="$(var.SourceDir)APS.exe.config" KeyPath="yes" />
        </Component>
        <Component Id="AutomatedIDSystem.exe.manifest" Guid="{07689029-E9E0-47C0-87D7-5A94FC959EDF}">
          <File Id="AutomatedIDSystem.exe.manifest" Source="$(var.SourceDir)APS.exe.manifest" KeyPath="yes" />
        </Component>
        <Component Id="AutomatedIDSystem.pdb" Guid="{4D3FBB60-6F55-439E-A88B-ADE7AF7A7459}">
          <File Id="AutomatedIDSystem.pdb" Source="$(var.SourceDir)APS.pdb" KeyPath="yes" />
        </Component>
        <!--<Component Id="AutomatedIDSystem.vshost.application" Guid="{684D3AC6-FC03-4E87-944B-2D897169CDDE}">
        <File Id="AutomatedIDSystem.vshost.application" Source="$(var.SourceDir)APS.vshost.application" KeyPath="yes" />
      </Component>-->
        <Component Id="AutomatedIDSystem.vshost.exe" Guid="{478284E1-999D-481D-91B4-4F8F15B998A6}">
          <File Id="AutomatedIDSystem.vshost.exe" Source="$(var.SourceDir)APS.vshost.exe" KeyPath="yes" />
        </Component>
        <!--<Component Id="AutomatedIDSystem.vshost.exe.config" Guid="{099D79F8-370D-40FE-A6C2-0B76B6397FC7}">
        <File Id="AutomatedIDSystem.vshost.exe.config" Source="$(var.SourceDir)APS.vshost.exe.config" KeyPath="yes" />
      </Component>-->
        <!--<Component Id="AutomatedIDSystem.vshost.exe.manifest" Guid="{48F07333-9C5B-4894-961D-531C26874531}">
        <File Id="AutomatedIDSystem.vshost.exe.manifest" Source="$(var.SourceDir)APS.vshost.exe.manifest" KeyPath="yes" />
      </Component>-->
        <Component Id="Password.ico" Guid="{99391003-D8EE-4E6A-98E2-393F2ECE09D8}">
          <File Id="Password.ico" Source="$(var.SourceDir)1Password.ico" KeyPath="yes" />
        </Component>
        <Component Id="setup.bat" Guid="{0460C522-A02B-4C8B-A0EE-34F1AFF677D1}">
          <File Id="setup.bat" Source="$(var.SourceDir)setup.bat" KeyPath="yes" />
        </Component>

        <Component Id="netframework" Guid="{6BFA9239-38C7-4040-9487-6A5D20315CA7}">
          <File Id="netframework" Source="$(var.SourceDir)dotnetfx452_full_x86_x64.exe" KeyPath="yes" />
        </Component>

        <!--    <Component Id="DesktopShortcut" Directory="DesktopFolder"> -->
        <Component Id="ApplicationShortcutDesktop" Guid="902B784B-B1F0-4629-AAC9-D46845734248">
          <Shortcut Id="ApplicationDesktopShortcut" Name="AppName" Description="APS" Target="[INSTALLFOLDER]APS.exe" WorkingDirectory="INSTALLFOLDER" />
          <RemoveFolder Id="DesktopFolder" On="uninstall" />
          <RegistryValue Root="HKCU" Key="SoftwareAPS" Name="installed" Type="integer" Value="1" KeyPath="yes" />
        </Component>
        <!--</Component>-->

      </ComponentGroup>
    </Fragment>
  </Wix>

按照 craigster 的指示,它正在为第 31 行提供警告

After following the direction that craigster and it's providing warnings for line 31

 <SetDirectpry Id="DesktopFolder" Value="H:Desktop" />

第 41 行的警告说

the warning on line 41 says

Show Details    Severity    Code    Description Project File    Line
    Error       The Wix element contains an unexpected child element 'SetDirectory'.    Product.wxs 41
    Warning     The element 'Wix' in namespace 'http://schemas.microsoft.com/wix/2006/wi' has invalid child element 'SetDirectory' in namespace 'http://schemas.microsoft.com/wix/2006/wi'. List of possible elements expected: 'Fragment' in namespace 'http://schemas.microsoft.com/wix/2006/wi'. Product.wxs 41

请告诉我我需要对我的 WIX 做什么才能在 H:Desktop 上创建快捷方式

Please tell me what I need to do to my WIX to have a shortcut created on H:Desktop

我还需要删除什么,因为它是不必要的/多余的.

Also what do I need to remove because it's unnecessary/redundant.

推荐答案

我自己也遇到了麻烦.这是一个有效的项目模板:

I had trouble with this myself. Here is a project template that works:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <Product Id="243604BF-62BC-4B9B-BFA7-8BD43DE096B9" Name="JTsApp" Language="1033" Version="1.4.0.0" Manufacturer="JT Pty Ltd" UpgradeCode="CEFF1611-50E1-4DC9-BC60-548A76312AA5">
    <Package Description="JTsApp Installer" Comments="JTsApp" InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

    <Upgrade Id="{CEFF1611-50E1-4DC9-BC60-548A76312AA5}">
      <UpgradeVersion Minimum="1.0.4" IncludeMinimum="yes" Maximum="1.4.0" IncludeMaximum="yes" Property="OLDERVERSIONBEINGUPGRADED" />
    </Upgrade>

    <Icon Id="favicon.ico" SourceFile="JTsApp.ico"/>
    <Property Id="ARPPRODUCTICON" Value="favicon.ico" />

    <!--Ref: http://stackoverflow.com/questions/2058230/wix-create-non-advertised-shortcut-for-all-users-per-machine
    <Property Id="DISABLEADVTSHORTCUTS" Value="1" />-->

    <Feature Id="ProductFeature" Title="JTsApp" Level="1">
      <ComponentGroupRef Id="ProductComponents" />
      <ComponentRef Id="ProgramMenuDir"/>
    </Feature>

    <Media Id="1" Cabinet="JTsApp.cab" EmbedCab="yes" />

    <!--<PropertyRef Id="NETFRAMEWORK40FULL" />
    <Condition Message="This application requires .NET Framework 4.0.">
      <![CDATA[Installed OR NETFRAMEWORK40FULL]]>
    </Condition>-->

    <UIRef Id="MyWixUI_Minimal" />

    <InstallExecuteSequence>
      <RemoveExistingProducts After="InstallInitialize"/>
    </InstallExecuteSequence>

</Product>

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="DesktopFolder" SourceName="Desktop" />

    <Directory Id="ProgramMenuFolder" Name="Programs">
      <Directory Id="ApplicationProgramsFolder" Name="JTsApp">
        <Component Id="ProgramMenuDir" Guid="F8F34900-78DC-43FD-8C24-FC8A2401981D">
          <RemoveFolder Id="ProgramMenuDir" On="uninstall"/>
          <RegistryValue Root="HKMU" Key="Software[Manufacturer]JTsApp" Type="integer" Value="1" Name="installed" KeyPath="yes" />
        </Component>
      </Directory>
    </Directory>

    <Directory Id="ProgramFilesFolder">
      <Directory Id="ManufacturerFolder" Name="JTs Pty Ltd">
        <Directory Id="INSTALLFOLDER" Name="JTsApp">
        </Directory>
      </Directory>
    </Directory>

  </Directory>

</Fragment>

<Fragment>
  <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
    <!--Core Application-->
    <Component Id="TouchTypingWizard_Component">
    <File Id="TouchTypingWizard.exe" KeyPath="yes" Name="TouchTypingWizard.exe" Source="C:1AWiXsInstallerTemplateSetupProject1TouchTypingWizardinDebugTouchTypingWizard.exe" />

      <Shortcut Id="DesktopShortcut" Directory="DesktopFolder" Name="JTsApp" WorkingDirectory="INSTALLDIR" Advertise="yes" Icon="favicon.ico" IconIndex="0" />
      <Shortcut Id="ExeShortcut" Directory="ApplicationProgramsFolder" Name="JTsApp" WorkingDirectory="INSTALLDIR"  Advertise="yes" Icon="favicon.ico" IconIndex="0" />

    </Component>

    <Component Id="JTsApp_DefaultIcon_RegKey">
      <RegistryValue Id="JTsApp_DefaultIcon_RegKey" Root="HKCR" Key="JTsAppDefaultIcon" Value="" Type="string" KeyPath="yes" />
    </Component>

    <Component Id="JTsApp_DefaultIcon_exe_RegKey_Component">
      <RegistryValue Id="JTsApp_DefaultIcon_exe_RegKey" Root="HKCR" Key="JTsAppDefaultIcon" Name="Default" Value="TouchTypingWizard.exe,1" Type="string" KeyPath="yes" />
    </Component>

  </ComponentGroup>
</Fragment>

</Wix>

您可以看到我尝试了很多东西,但我没有花时间缩小范围.我相信这几行是关键:

You can see I tried a lot of things and I haven't taken the time to narrow it down. I believe these lines are the key:

   <Shortcut Id="DesktopShortcut" Directory="DesktopFolder"
 Name="JTsApp" WorkingDirectory="INSTALLDIR" Advertise="yes"
 Icon="favicon.ico" IconIndex="0" />
       <Shortcut Id="ExeShortcut" Directory="ApplicationProgramsFolder" Name="JTsApp" WorkingDirectory="INSTALLDIR"  Advertise="yes"
 Icon="favicon.ico" IconIndex="0" />

虽然,我不排除以下几行:

Although, I haven't ruled out these lines:

 <Component Id="JTsApp_DefaultIcon_exe_RegKey_Component">
           <RegistryValue Id="JTsApp_DefaultIcon_exe_RegKey" Root="HKCR" Key="JTsAppDefaultIcon" Name="Default"
 Value="TouchTypingWizard.exe,1" Type="string" KeyPath="yes" />
         </Component>

不管怎样,这就是它有效的证明:

Anyway, here is proof it works:

这里是安装项目目录中的文件:

Here are the files in the setup project directory:

解决方案如下所示:

^^ 注意:我引用了 C:Program FilesWiX Toolset v3.8inWixUIExtension.dll 并包含了 MyWixUI_Minimal.wxs 文件.

^^ Note: I reference the C:Program FilesWiX Toolset v3.8inWixUIExtension.dll and I include the MyWixUI_Minimal.wxs file.

这里是安装项目供您下载并确认它可以工作:

Here is the Setup Project for you to download and confirm it works:

http://tempsend.com/09604C06D6

这篇关于如何在用户桌面文件夹上创建快捷方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆