insertar - Crear acceso directo al escritorio usando WiX
wix com account sites (5)
Creo que mi camino es más fácil, no es necesario que cree una clave de registro:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="DesktopFolder" SourceName="Desktop" />
<Directory Id="MergeRedirectFolder">
<Component Id="MyExeComponent" Guid="{PUT-GUID-HERE}">
<File Id="MyExeFile" Source="$(var.ExeSourcePath)" KeyPath="yes">
<Shortcut
Id="DesktopShortcut"
Directory="DesktopFolder"
Name="$(var.ShortcutName)"
WorkingDirectory="MergeRedirectFolder" />
</File>
</Component>
</Directory>
</Directory>
Así que tengo este proyecto de configuración en Wix y quería tener un acceso directo en el escritorio. Esto debe ser fácil, podrías pensar. Pero ese no es el caso. Todos los fragmentos de código encontrados en Internet no funcionaron. Después de algunas horas de luchar y leer la documentación, finalmente lo entendí bien, así que lo estoy compartiendo con ustedes aquí.
Gracias por ejemplo. En WIX 3.8 sigue aumentando: "Error 3 ICE43: Component ... tiene accesos directos no anunciados. Debe utilizar una clave de registro en HKCU como su KeyPath, no como un archivo".
Así que lo hice de esta manera en un archivo con características:
<Component Id="cmp79F6D61F01DD1060F418A05609A6DA70"
Directory="dirBin" Guid="*">
<File Id="fil34B100315EFE9D878B5C2227CD1454E1" KeyPath="yes"
Source="$(var.SourceDir)/FARMS.exe" >
<Shortcut Id="DesktopShortcut"
Directory="DesktopFolder"
Name="FARMS $(var.FarmsVersion)"
Description="Local Land Services desktop application"
WorkingDirectory="INSTALLFOLDER"
Icon="FARMS.exe"
IconIndex="0"
Advertise="yes" >
<Icon Id="FARMS.exe" SourceFile="$(var.SourceDir)/FARMS.exe" />
</Shortcut>
</File>
</Component>
Y mencioné la carpeta de escritorio en un archivo con definición de producto:
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="DesktopFolder" Name="Desktop" />
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="FARMS" >
</Directory>
</Directory>
</Directory>
</Fragment>
El acceso directo no es publicitado, espero que esto ayude a alguien. Recuerde poner el componente en su etiqueta de función.
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="DesktopFolder" Name="Desktop">
<Component Id="ApplicationShortcutDesktop" Guid="*">
<Shortcut Id="ApplicationDesktopShortcut"
Name="Text under your icon"
Description="Comment field in your shortcut"
Target="[MYAPPDIRPROPERTY]MyApp.exe"
WorkingDirectory="MYAPPDIRPROPERTY"/>
<RemoveFolder Id="DesktopFolder" On="uninstall"/>
<RegistryValue
Root="HKCU"
Key="Software/MyAppName"
Name="installed"
Type="integer"
Value="1"
KeyPath="yes"/>
</Component>
</Directory>
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="MyCompany" Name="MyCompany">
<Directory Id="MYAPPDIRPROPERTY" Name="MyAppName">
<!-- main installation files -->
</Directory>
</Directory>
</Directory>
</Directory>
Parece mucho más fácil en esta documentación .
Primero, debe apuntar su DesktopFolder,
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="DesktopFolder" Name="Desktop"/>
A continuación, debe crear el componente de acceso directo para el archivo del que desea crear acceso directo.
<Component Id="PutYourComponentIdHere" Directory="FileDirectory" Guid="*">
<File Id="NotYourComponentId" KeyPath="yes" Source="../YourFileSource/YourExecutable.exe">
<Shortcut Id="desktopServer" Directory="DesktopFolder" Name="YourShourtcutName" WorkingDirectory=''WhereShouldYourShortcutPoint'' Advertise="yes"/>
</File>
</Component>
Funcionó para mí Necesito poner el icono, pero eso es parte fácil. Espero que funcione.
Después de mucho esfuerzo, utilicé esta forma:
<Product ...>
<Feature Id="ProductFeature" Title="SetupProject" Level="1">
...
...
<ComponentRef Id="cmpDesktopShortcut" />
</Feature>
<Component Id="cmpDesktopShortcut" Guid="PUT-GUID-HERE" Directory="DesktopFolder" >
<Shortcut Id="MyDesktopShortcut"
Name="Setup Project"
Description="Opens the program."
Directory="DesktopFolder"
Target="[INSTALLFOLDER]App.exe"
WorkingDirectory="INSTALLFOLDER"/>
<RegistryValue Root="HKCU" Key="Software/My Company/Sample Application" Name="installed" Type="integer" Value="1" KeyPath="yes" />
</Component>
</Product>