Necesito ejecutar el ejecutable para la instalación/desmontaje personalizados, después de la instalación y antes de la desinstalación. Necesita funcionar con privilegios elevados. ¿Cómo hacer esto correctamente?¿Cómo ejecutar un ejecutable personalizado con privilegios elevados?
Respuesta
Por lo tanto, la solución final era como esto:
<CustomAction Id="Install" Directory="APPLICATIONROOTDIRECTORY"
Execute="deferred" Impersonate="no" Return="ignore"
ExeCommand="[APPLICATIONROOTDIRECTORY]MyExeName.exe -install" />
<CustomAction Id="Uninstall" Directory="APPLICATIONROOTDIRECTORY"
Execute="deferred" Impersonate="no" Return="ignore"
ExeCommand="[APPLICATIONROOTDIRECTORY]MyExeName.exe -uninstall" />
<InstallExecuteSequence>
<Custom Action='Install' After='InstallFiles' >
$ProductComponent = 3
</Custom>
<Custom Action='Uninstall' After='InstallInitialize' >
?ProductComponent = 3
</Custom>
</InstallExecuteSequence>
¿Algún consejo para mejorarlo?
Tener un vistazo a este blog en la sección Cómo al autor encargo acciones que requieren privilegios administrativos
Otra link que realmente explica todos los tipos de acciones personalizadas. El elemento CustomAction en Wix.
Esto debería ayudarlo un poco más.
Después de mirar a su solución que parece que están haciendo un CustomAction Tipo 18, aquí me pega el contenido del blog anterior para aquellos tipos:
acción de un tipo de 18 llama a un archivo ejecutable que se instala con el aplicación durante la sesión actual. La columna Origen en la tabla CustomAction contiene la clave del registro en la tabla Archivo.
La columna de destino en la tabla CustomAction contiene la cadena de línea de comando para el ejecutable. Se aplican todas las opciones de procesamiento de devolución, programación de ejecución y ejecución in-script.
Debido a que el archivo se instala con la aplicación, no están secuenciando restricciones a medida Tipo de acción: 18
If the source file is not already installed on the computer:
Custom action must be sequenced after CostFinalize action because only after this action path to the file can be resolved.
If the source file is not already installed on the computer:
Deferred custom actions of this type must be sequenced after the InstallFiles action.
Non-deferred custom actions of this type must be sequenced after the InstallFinalize action.
punto de entrada a la acción personalizada recibe el identificador de la sesión de instalación. Durante la ejecución de acciones personalizadas diferidas, es posible que la sesión ya no exista. Para obtener el valor de las propiedades, use la propiedad CustomActionData.
Aquí es cómo añadir 18 Tipo de acción personalizada en Wix:
<Directory Id="TARGETDIR" Name="SourceDir">
<Component Id="Component1"
Guid="*">
<File Id="MyCA" Name="MyCA.exe" />
</Component>
</Directory>
<CustomAction Id="DoSomething"
FileKey="MyCA"
ExeCommand="-switch"
Execute="deferred"
Return="check"
HideTarget="no"
Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="DoSomething" Before="InstallFinalize" />
</InstallExecuteSequence>
En primer lugar, añadimos MyCA.exe a la tabla de archivos.
También agregamos una acción personalizada de Tipo 18 a la tabla CustomAction. El atributo FileKey apunta al elemento con la acción personalizada dll. El atributo ExeCommand especifica la cadena de línea de comando para el ejecutable.
Lo último que debe hacer es programar nuestra acción personalizada en todas las tablas de secuencia requeridas.
Esto debería ayudarle a cabo, más o menos lo que falta, pero sugieren fuertemente que nos fijamos en todos los tipos de acciones personalizadas que le ayudarán más adelante al hacer más instaladores
Esto no es suficiente para hacer que funcione. Es necesario instalar acciones personalizadas en el punto de secuencia correcto y usar las condiciones adecuadas para lidiar con el escenario de actualización, reparación, etc. :( – user626528
Pero esto responde a su pregunta. Proporciona una guía clara de cómo ejecutar CA elevado, y usted es libre para desarrollar la idea más allá para construir lo que necesita. –
@Yan Sklyarenko, no. Esto es 10% de la respuesta real – user626528
Podría agregar 'NO QUITAR' para Install & Repair Sequence. Y 'Instalado AND (REMOVE = "ALL")' solo para la secuencia de Desinstalar.
<InstallExecuteSequence>
<Custom Action='Install' After='InstallFiles' >
NOT REMOVE
</Custom>
<Custom Action='Uninstall' After='InstallFiles' >
Installed AND (REMOVE = "ALL")
</Custom>
</InstallExecuteSequence>
Hope esto sería útil para alguien que está luchando con el sistema de herramienta Wix Etiquetas: CustomAction, InstallExecuteSequence, exe Ejecutar después de la instalación Wix completos, archivo binario o de recursos dentro de Wix
Sin embargo, no es capaz de encontrar la forma conseguir hecho de Bootstrapper
Nombre de archivo: Product.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="TestingQtExec" Language="1033" Version="1.0.0.0"
Manufacturer="My Company" UpgradeCode="PUT-GUID-HERE">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MediaTemplate EmbedCab="yes" />
<Feature Id="ProductFeature" Title="TestingQtExec" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<Binary Id="WixCA1"
SourceFile="FTDI.exe"/>
<!-- install plugin -->
<CustomAction Id="FTDIInstall"
BinaryKey ="WixCA1"
ExeCommand="/passive"
Execute="commit"
Return="asyncNoWait"
HideTarget="no"
Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="FTDIInstall" Before="InstallFinalize" />
</InstallExecuteSequence>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="TestingQtExec" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="cmpSampleTXT" Guid="*">
<File Source="Sample.txt" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
¿Podrías explicar cómo responde esto a la pregunta de los carteles originales? – Kmeixner
- 1. Ejecutar un ejecutable con privilegios de administrador en Mac
- 2. Aplicación de Mac App Store con privilegios elevados
- 3. ¿DefaultAppPool se ejecuta con privilegios elevados especiales en IIS?
- 4. ¿Puedo determinar si Matlab se está ejecutando como con privilegios elevados en Windows?
- 5. ¿Puedo ejecutar Node.JS con privilegios bajos?
- 6. ¿Cómo comprobar si un proceso tiene privilegios elevados en Windows 7 utilizando C++ nativo?
- 7. Ejecutar SQL Script con el ejecutable .net
- 8. ¿Cómo instalo con permisos elevados usando un instalador de WiX?
- 9. gdb - ¿Cómo ejecutar automáticamente el ejecutable?
- 10. No se puede detectar si un usuario se está ejecutando con privilegios elevados, cuando no hay ventanas emergentes UAC
- 11. Cómo ejecutar un archivo ejecutable incrustado como recurso
- 12. ¿Cómo puedo ejecutar un ejecutable desde la RAM usando C++?
- 13. ¿Cómo ejecutar un programa ejecutable con un archivo de configuración diferente?
- 14. ¿Es posible instalar en Archivos de programa con privilegios limitados?
- 15. ¿Cómo de-elevar los privilegios de un proceso hijo
- 16. Cómo ejecutar un proceso con CAP_SYS_RESOURCE
- 17. ejecutar sql personalizado con entity framework?
- 18. Creando un jar ejecutable con Maven 2
- 19. ¿Se puede usar SMJobSubmit() para ejecutar un ayudante con privilegios instalado por SMJobBless?
- 20. Crea un ejecutable de Java con Eclipse
- 21. ejecutar un destino personalizado msbuild desde VisualStudio
- 22. Crear un JAR ejecutable Groovy con Gradle
- 23. PostgreSQL - cómo colocar rápidamente un usuario con privilegios existentes
- 24. ¿Cómo ejecutar ejecutable al final del proyecto de instalación?
- 25. ¿Cómo podemos ejecutar un comando personalizado en eclipse?
- 26. Visual Studio requiere permisos elevados en Windows 7
- 27. Ejecutar ARM ejecutable nativo en Jelly Bean
- 28. Cómo crear un programa ejecutable desde AppleScript
- 29. Ejecutar un ejecutable con parámetros en C++ y obtener el valor de retorno;
- 30. Eclipse: ¿Cómo construir un jar ejecutable con jar externo?
¿Qué es ProductComponent? –