Estoy creando un archivo instalador msi utilizando el kit de herramientas XML de Windows Installer. Al instalar el archivo msi creado, un acceso directo ubicado debajo de la carpeta ProgramMenuFolder da como resultado un atajo para el usuario Administrador solamente. ¿Cómo dejo que el instalador cree un atajo en el perfil Todos los usuarios, para que todos en la máquina tengan acceso directo? el blog de¿Cómo instalar atajos de programa para todos los usuarios?
Respuesta
Stuart Preston tiene una buena descripción de cómo hacer esto:
Installing a shortcut for "All Users" (via Wayback Machine)
Editar:
Los Synopsys es:
En el archivo .wxs, incluye lo siguiente:
<Property Id="ALLUSERS"><![CDATA[2]]></Property>
Esto preconfigurará una propiedad que imita el comportamiento de seleccionar los "Todos los usuarios" en lugar de "Just Me" para su instalación. Usted necesita una estructura de directorios similar al siguiente también:
<Directory Id='ProgramMenuFolder' Name='PMenu' LongName='Programs'> <Directory Id='MyProductShortcutDir' Name='MyPMenu' LongName='MyProduct' /> </Directory>
Por último, el acceso directo debe estar dentro de un elemento de "Archivo", de la siguiente manera:
<File Id="MyProduct.File0" LongName="MyProduct.exe" Name="MYPROD_1.EXE" src="c:\MyProductSourceFolder\MyProduct.exe" > <Shortcut Id="MyProduct.Shortcut" Directory="MyProductShortcutDir" Name="MPSCUT" LongName="My Product Shortcut" /> </File>
En el Package element, agregue un atributo InstallScope como este:
InstallScope='perMachine'
Defina ALLUSERS = 1 simple para forzar una instalación por máquina .
<Property Id="ALLUSERS"><![CDATA[1]]></Property>
Debe usar InstallScope = 'perMachine' en su lugar –
¿No es eso lo que establece la propiedad ALLUSERS de todos modos? Al menos eso es lo que se indica en la documentación. – saschabeaumont
Sobre la base de los SampleFirst.wxs en el WIX Tutorial http://www.tramontana.co.hu/wix/lesson1.php había dos partes que he cambiado.
Primero, agregue la propiedad ALLUERS = 1 "". Eso instala el acceso directo al perfil de todos los usuarios como otros han notado.
En segundo lugar, cambie la raíz del valor de registro para Component 'ProgramMenuDir' a HKMU. El instalador decidirá si debe usar HKLM (Máquina local) o HKCU (Usuario actual) en el momento de la instalación, en función de la propiedad ALLUSERS.
Debería poder agregar cuadros de diálogo para modificar la propiedad ALLUSERS, con la raíz del registro cambiando en consecuencia.
<?xml version="1.0" encoding="utf-8"?>
<!-- Original Source available at "http://www.tramontana.co.hu/wix/download.php?file=samples/samplefirst.zip&type=application/zip"
This version has been modified for a local machine install (all users) vs a user install-->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Name="Foobar 1.0" Id="YOURGUID-CD32-4B20-BB4F-58A5C3B21A7C" UpgradeCode="YOURGUID-EDCE-42A2-9DA2-59FB08AC4FA6" Language="1033" Codepage="1252" Version="1.0.0" Manufacturer="Acme Ltd.">
<Package Id="*" Keywords="Installer" Description="Acme's Foobar 1.0 Installer" Comments="Foobar is a registered trademark of Acme Ltd." Manufacturer="Acme Ltd." InstallerVersion="100" Languages="1033" Compressed="yes" SummaryCodepage="1252" />
<Media Id="1" Cabinet="Sample.cab" EmbedCab="yes" DiskPrompt="CD-ROM #1" />
<Property Id="DiskPrompt" Value="Acme's Foobar 1.0 Installation [1]" />
<Property Id="ALLUSERS" Value="1" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="Acme" Name="Acme">
<Directory Id="INSTALLDIR" Name="Foobar 1.0">
<Component Id="MainExecutable" Guid="YOURGUID-2191-4A98-806B-2554B0DD8FC3">
<File Id="FoobarEXE" Name="FoobarAppl10.exe" DiskId="1" Source="FoobarAppl10.exe" KeyPath="yes">
<Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar 1.0" WorkingDirectory="INSTALLDIR" Icon="Foobar10.exe" IconIndex="0" Advertise="yes" />
<Shortcut Id="desktopFoobar10" Directory="DesktopFolder" Name="Foobar 1.0" WorkingDirectory="INSTALLDIR" Icon="Foobar10.exe" IconIndex="0" Advertise="yes" />
</File>
</Component>
<Component Id="HelperLibrary" Guid="YOURGUID-7BA7-4BD1-90B9-C0DFC21674B1">
<File Id="HelperDLL" Name="Helper.dll" DiskId="1" Source="Helper.dll" KeyPath="yes" />
</Component>
<Component Id="Manual" Guid="YOURGUID-F60A-48D6-83FD-44ED01AA579A">
<File Id="Manual" Name="Manual.pdf" DiskId="1" Source="Manual.pdf" KeyPath="yes">
<Shortcut Id="startmenuManual" Directory="ProgramMenuDir" Name="Instruction Manual" Advertise="yes" />
</File>
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="Foobar 1.0">
<Component Id="ProgramMenuDir" Guid="YOURGUID-2D4F-443F-9ADA-563DB3C1581F">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKMU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" />
</Component>
</Directory>
</Directory>
<Directory Id="DesktopFolder" Name="Desktop" />
</Directory>
<Feature Id="Complete" Level="1">
<ComponentRef Id="MainExecutable" />
<ComponentRef Id="HelperLibrary" />
<ComponentRef Id="Manual" />
<ComponentRef Id="ProgramMenuDir" />
</Feature>
<Icon Id="Foobar10.exe" SourceFile="FoobarAppl10.exe" />
<UI />
</Product>
</Wix>
'HKMU' era aparentemente el hechizo mágico que necesitaba hoy! –
Bob Arnson tiene un blog entry que trata sobre cómo definir usuario contra la máquina en Wix.
La respuesta rápida es establecer el atributo InstallScope del elemento Package en "perMachine".
- 1. Instalar una aplicación y base de datos para todos los usuarios
- 2. Cómo guardar una configuración para Todos los usuarios en Vista
- 3. Establecer permisos de escritura para todos los usuarios para mi carpeta de programa
- 4. Instalación de paquetes R disponibles para todos los usuarios
- 5. ASP.NET | Autenticación de formularios | Obtenga TODOS los usuarios iniciados (lista de todos los usuarios o conteo)
- 6. Lista de todos los usuarios y grupos
- 7. Revocar todos los privilegios para todos los usuarios en una base de datos MySQL
- 8. ASP.NET MVC Listar todos los usuarios
- 9. todos los usuarios mesas/secuencias en Oracle
- 10. Git bugtraq para todos los usuarios que clonan mis repositorios?
- 11. Todos los comprobadores aparecen como usuarios anónimos
- 12. Cómo obtener una lista de todos los usuarios en SharePoint
- 13. NVM & Node.js - Instalación recomendada para todos los usuarios
- 14. ¿Cómo agregar los atajos de JMenuBar?
- 15. Wix crear acceso directo no publicitado para todos los usuarios/por máquina
- 16. Cómo otorgar todos los privilegios en vistas a usuarios arbitrarios
- 17. ¿Puedo usar RVM para mantener una única versión de Ruby para todos los usuarios?
- 18. Proyecto de instalación de Visual Studio Eliminar la instalación para todos los usuarios
- 19. ¿Cómo lograr que todos los usuarios desempeñen un papel específico?
- 20. ¿Cómo instalar todos los paquetes NuGet desde una fuente específica?
- 21. atajos de teclado iPhone/iPad?
- 22. ¿Cómo se programa usar todos los procesadores en su máquina?
- 23. Inno Configuración y permisos para no administradores: ¿todos, usuarios o usuarios automáticos?
- 24. Mejores prácticas para diseñar atajos de teclado
- 25. : los atajos de teclado personalizados no funcionan?
- 26. Almacenamiento en memoria caché de todos los usuarios en ASP.NET
- 27. Rails ActiveRecord: Buscar todos los usuarios excepto el usuario actual
- 28. Cómo crear un atajo de escritorio para todos los usuarios en WIX
- 29. Cómo deshabilitar la autenticación de contraseña para todos los usuarios excepto varios
- 30. Ejecutar atajos como programas
Cuando lo hace, no tiene que preocuparse por la propiedad ALLUSERS. Si se configura InstallScope en 'perMachine' automáticamente se establece ALLUSERS en 1. – RaceRalph