installer - publicar - ¿Cómo creo un diálogo personalizado en WiX para la entrada del usuario?
como subir un blog a wix (5)
¿Qué hay de usar el dictado de los estados guardados en el método de instalación ProjectInstaller.
Estoy usando WiX para crear un instalador para un servicio de Windows. Es deseable que el nombre del servicio que se instala y se muestra en los Servicios se pueda configurar en el momento de la instalación.
Por ejemplo, esto es lo que estoy pensando (wix xml snip):
<ServiceInstall
Id="MyServiceInstaller"
Name="NAME_PASSED_FROM_DIALOG"
Type="ownProcess"
Start="auto"
ErrorControl="normal"
Description="My Service"
Account="localsystem"/>
<ServiceControl
Id="StartMyServiceInstaller"
Name="NAME_PASSED_FROM_DIALOG"
Start="install"
Wait="no" />
<ServiceControl
Id="StopMyServiceInstaller"
Name="NAME_PASSED_FROM_DIALOG"
Remove="uninstall"
Stop="both"
Wait="yes" />
NAME_PASSED_FROM_DIALOG es algo que me gustaría conectar a un cuadro de diálogo personalizado que se crea y se muestra a la persona que instala el servicio para que pueda establecer / modificar el nombre del servicio. Creo que esto es muy similar a la propiedad WIXUI_INSTALLDIR que se establece y pasa al conjunto de diálogo WixUI_InstallDir.
Mi pregunta es:
¿Cómo creo un diálogo de IU personalizado que pueda aceptar la entrada del usuario que se pasa al tiempo de ejecución del instalador?
1. necesita crear MyWixUI_InstallDir.wx s para anular WixUI_InstallDir para que se refiera a esto
ACTUALIZACIÓN Oct.2018, Stein Åsmul : Se eliminó la URL. Redirige a algún sitio de spam extraño ahora. El enlace todavía está disponible en la historia. No lo encontré en waybackmachine después de una búsqueda rápida.
2.Es necesario agregar su propio cuadro de diálogo que contiene cuadros de texto de entrada para obtener información del usuario que se encuentra en Propiedad y consultar ese cuadro de diálogo en MyWixUI_InstallDir.wxs
3.finalmente necesita referirse a MyWixUI_InstallDir.wxs en product.wxs. como
<UIRef Id="MyWixUI_InstallDir" />
4.Debe crear una customaction para comprobar que el usuario está disponible en la máquina en funcionamiento.
5. Luego, si el usuario es válido, debemos asignar esa credencial (obtener de la Propiedad ) a nuestro servicio.
<DirectoryRef Id="INSTALLDIR">
<Component Id="CMP_InstallMeTXT" Guid="*">
<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Name="WinServiceProject" DisplayName="WinServiceProject" Description="WinServiceProject" Start="auto" ErrorControl="ignore" Interactive="no" Account="./[ACCOUNT]" Password="[MY_PASSWORD]" />
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="WinServiceProject"Wait="yes" />
<util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[ACCOUNT]" Password="[MY_PASSWORD]" LogonAsService="yes" />
</Component>
</DirectoryRef>
Puede obtener un proyecto de muestra aquí https://github.com/skullpsg/Wix_installer
Diviértete con la interfaz de usuario!
Edición: El enlace original para responder ya no existe. FireGiant (los mantenedores de Wix) algunos ejemplos para parte de este proceso, pero no responde completamente esta pregunta. Hay un tutorial adicional ( ACTUALIZACIÓN en agosto de 201 : Enlace resucitado de Wayback Machine) que hace todo lo posible para responder esta pregunta.
Un resumen de alto nivel de lo que sucederá es:
- Crear una propiedad
- Tener el control de la interfaz de usuario establecer esta propiedad
- El atributo de nombre en el servicio hará referencia a la propiedad, es decir, [ServiceNameProperty].
Sin embargo, esto es complejo, y la forma en que se sugiere crear un nuevo cuadro de diálogo de UI es tomar un cuadro de diálogo existente, hacer un clon y luego editar con nuevo texto, controles y usarlo para poblar la propiedad.
El problema que tengo con el uso de propiedades para establecer el Nombre del servicio es que cuando intenta desinstalar el servicio, el servicio no puede encontrar el nombre del servicio.
Trate de usar WixEdit que es una buena herramienta para crear IU