How can I create a shortcut on the Users Desktop folder(如何在用户桌面文件夹上创建快捷方式)
问题描述
根据 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
这篇关于如何在用户桌面文件夹上创建快捷方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在用户桌面文件夹上创建快捷方式
基础教程推荐
- SSE 浮点算术是否可重现? 2022-01-01
- 如何激活MC67中的红灯 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- c# Math.Sqrt 实现 2022-01-01
- rabbitmq 的 REST API 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01