2009-08-16 13 views
5

Soy bastante nuevo en WIX. Desnudo conmigo.Instalador WIX: Agregar POS como un requisito previo

que desea instalar Microsoft POS (Point of service) con mi instalador, después de instalar .NET FX, SQL Server edición compacta, etc.

Estoy dispuesto a suministrar el exe con el instalador (sin necesidad de obtener de la web) .

He encontrado este link. El artículo en el enlace indica que debe llamar a la configuración con algunos parámetros. Pero no tengo ni idea de cómo hacerlo en Wix. En segundo lugar, no estoy seguro de que sea la manera correcta de hacerlo también. (tal vez se necesita un módulo de fusión?)

¿Alguien sabe?

Gracias Ariel

Respuesta

4

Wix produce archivos MSI, y no se puede poner en marcha un programa de instalación desde el interior de un MSI. Si encuentra un módulo de fusión para POS, puede incluirlo en su Wix. De lo contrario, tendrá que usar un programa de arranque para instalar primero el POS y luego iniciar su MSI (como DotNetInstaller).

+0

Sí, crea un MSI, pero aún puede llamar a aplicaciones externas, incluso si solo son EXE. De acuerdo, un módulo de fusión sería la opción preferida, pero si solo está disponible un EXE, también se puede llamar a través de una acción personalizada. –

+2

No si ese EXE es realmente un arranque que a su vez invocará un MSI. Según entendí, el instalador de POS era, de hecho, un "bootstrapper" ... pero podría estar equivocado. – Nestor

+0

Ah sí, buen punto. Si la instalación del punto de venta es realmente una MSI, entonces tendría que tener un módulo de combinación –

0

Si no puede obtener un módulo de fusión (que sería la solución preferida, si el editor lo pone a disposición), puede incluir un EXE con la instalación y luego ejecutarlo durante la instalación de WiX como un acción personalizada.

Desde el excellent tutorial on WiX en Tramontana, aquí hay un page on custom actions y la forma de ponerlos en marcha - que básicamente necesita para definir un elemento <CustomAction> en su archivo de WiX y especificar qué hacer cuando es ejecutado:

<CustomAction Id='LaunchFile' FileKey='FoobarEXE' ExeCommand='' Return='asyncNoWait' /> 

Esta voluntad ejecute un archivo que acaba de instalar como parte de su aplicación y al que se hace referencia en su script de WiX como FoobarEXE.

<CustomAction Id='LaunchFile' BinaryKey='FoobarEXE' ExeCommand='' Return='asyncNoWait' /> 

Esto haría referencia a un archivo binario (por ejemplo, un archivo EXE), que incluyó en su paquete de instalación WiX (MSI o CAB), pero eso no ha instalado como parte de la instalación, y que ha sido extraído como una archivo binario.

vez que sabe lo que va a hacer, es necesario definir el momento en la secuencia de los pasos de instalación, esta acción personalizada debe ser ejecutado:

<InstallExecuteSequence> 
    ... 
    <Custom Action='LaunchFile' After='InstallFinalize'>NOT Installed</Custom> 
</InstallExecuteSequence> 

Aquí, la acción personalizada llamada LaunchFile se ejecutará después de la instalación finalizó, pero solo, si se determinó que la aplicación aún no se había instalado.

Supongo que debería poder hacer lo que se está esforzando por hacer con una Acción personalizada en WiX: consulte WiX 2.0 documentation y Steven Bone's blog post series para obtener información adicional.

Espero que esto ayude!

Marc

+0

No puede usar el instalador de Windows mientras se está ejecutando. Este es uno de los casos: el instalador de POS es un contenedor de exe que invoca el instalador de Windows, por lo que no puede usar el exe como una acción personalizada durante otra instalación. –

0

Es un dotnetinstaller uso, el adjunto es un archivo XML de ejemplo.

Ejecute InstallerEditor.exe y abra el archivo xml de muestra, modifíquelo para su uso, luego ejecute InstallerLinker.exe de la siguiente manera: InstallerLinker.exe/Configuration: "c: \ path \ to \ your \ prod.xml "/ salida: "c: \ work \ setup.exe" /t:"%DOTNETINSTALLER%\Bin\dotNetInstaller.exe"/v

<?xml version="1.0" encoding="utf-8"?> 
<configurations lcid_type="UserExe" show_language_selector="False" language_selector_title="" language_selector_ok="OK" language_selector_cancel="Cancel" configuration_no_match_message="" ui_level="full" fileversion="" productversion="" log_enabled="True" log_file="#APPPATH\YourPackageInstallLog.txt"> 
    <schema version="1.10.1525.0" generator="dotNetInstaller InstallerEditor" /> 
    <fileattributes> 
    <fileattribute name="FileDescription" value="YourPackage Installer" /> 
    <fileattribute name="CompanyName" value="MyCompany Design" /> 
    <fileattribute name="FileVersion" value="%RESOLVEVERSION%" /> 
    </fileattributes> 
    <configuration dialog_caption="YourPackage Installer" dialog_message="In order to install YourPackage you must install these components:" dialog_message_uninstall="" dialog_bitmap="#APPPATH\banner.bmp" skip_caption="Skip" install_caption="Install" uninstall_caption="Uninstall" cancel_caption="Close" status_installed=" (Installed)" status_notinstalled="" failed_exec_command_continue="Failed to install %s. Continue with others components?" installation_completed="YourPackage installed successfully!" uninstallation_completed="YourPackage uninstalled successfully!" installation_none="YourPackage is already installed!" uninstallation_none="YourPackage is not installed!" installing_component_wait="Installing %s. Wait, this operation could take some time ..." uninstalling_component_wait="Uninstalling %s. Wait, this operation could take some time ..." reboot_required="To continue the installation you must restart your computer. Restart now?" must_reboot_required="False" dialog_otherinfo_caption="" dialog_otherinfo_link="" complete_command="" complete_command_silent="" complete_command_basic="" wait_for_complete_command="True" auto_close_if_installed="True" auto_close_on_error="False" reload_on_error="True" dialog_show_installed="True" dialog_show_uninstalled="True" dialog_show_required="True" cab_dialog_message="%s" cab_cancelled_message="" cab_dialog_caption="" cab_path="#TEMPPATH\#GUID" cab_path_autodelete="True" dialog_default_button="cancel" dialog_position="" dialog_components_list_position="" dialog_message_position="" dialog_bitmap_position="" dialog_otherinfo_link_position="" dialog_osinfo_position="" dialog_install_button_position="" dialog_cancel_button_position="" dialog_skip_button_position="" auto_start="False" auto_continue_on_reboot="False" reboot_cmd="" show_progress_dialog="True" show_cab_dialog="True" type="install" lcid_filter="" language_id="" language="" os_filter="" os_filter_min="win7" os_filter_max="win7" processor_architecture_filter="" supports_install="True" supports_uninstall="True"> 
    <component package="#CABPATH\%CUDATOOLKITPACKAGE%" cmdparameters="/passive" cmdparameters_silent="/qn" cmdparameters_basic="/qb-" uninstall_package="" uninstall_cmdparameters="/qb-" uninstall_cmdparameters_silent="/qn" uninstall_cmdparameters_basic="/qb-" id="%CUDATOOLKITPACKAGE%" display_name="%CUDATOOLKITPACKAGE%" uninstall_display_name="" os_filter="" os_filter_min="win7" os_filter_max="win7" os_filter_lcid="" type="msi" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="True" default_continue_on_error="False" required_install="False" required_uninstall="False" selected_install="True" selected_uninstall="False" note="" processor_architecture_filter="x64" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True"> 
     <embedfile sourcefilepath="..\..\..\Prereqs\%CUDATOOLKITPACKAGE%" targetfilepath="%CUDATOOLKITPACKAGE%" /> 
     <installedcheck path="SOFTWARE\NVIDIA Corporation\GPU Computing Toolkit\CUDA" fieldname="VersionsInstalled" fieldvalue="%CUDATOOLKITVERSION%" defaultvalue="False" fieldtype="REG_MULTI_SZ" comparison="contains" rootkey="HKEY_LOCAL_MACHINE" wowoption="WOW64_64" type="check_registry_value" description="Installed Check" /> 
    </component> 
    <component executable="#CABPATH\%POSTGRESQLPACKAGE%" executable_silent="" executable_basic="" install_directory="" responsefile_source="" responsefile_target="" responsefile_format="none" uninstall_executable="" uninstall_executable_silent="" uninstall_executable_basic="" uninstall_responsefile_source="" uninstall_responsefile_target="" returncodes_success="" returncodes_reboot="" exeparameters="--mode unattended --unattendedmodeui minimal --servicepassword YourProduct --superpassword YourProduct --superaccount postgres --serviceaccount postgres --debuglevel 4" exeparameters_basic="" exeparameters_silent="" uninstall_exeparameters="" uninstall_exeparameters_basic="" uninstall_exeparameters_silent="" id="%POSTGRESQLPACKAGE%" display_name="%POSTGRESQLPACKAGE%" uninstall_display_name="" os_filter="" os_filter_min="win7" os_filter_max="win7" os_filter_lcid="" type="exe" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="True" default_continue_on_error="False" required_install="False" required_uninstall="False" selected_install="True" selected_uninstall="False" note="" processor_architecture_filter="x64" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True"> 
     <embedfile sourcefilepath="..\..\..\Prereqs\%POSTGRESQLPACKAGE%" targetfilepath="%POSTGRESQLPACKAGE%" /> 
     <installedcheck path="SOFTWARE\PostgreSQL\Installations\postgresql-x64-9.0" fieldname="Version" fieldvalue="%POSTGRESQLVERSION%" defaultvalue="False" fieldtype="REG_SZ" comparison="version_ge" rootkey="HKEY_LOCAL_MACHINE" wowoption="WOW64_64" type="check_registry_value" description="Installed Check" /> 
    </component> 
    <component executable="#CABPATH\vcredist_x64.exe" executable_silent="" executable_basic="" install_directory="" responsefile_source="" responsefile_target="" responsefile_format="none" uninstall_executable="" uninstall_executable_silent="" uninstall_executable_basic="" uninstall_responsefile_source="" uninstall_responsefile_target="" returncodes_success="" returncodes_reboot="" exeparameters="/passive" exeparameters_basic="" exeparameters_silent="" uninstall_exeparameters="" uninstall_exeparameters_basic="" uninstall_exeparameters_silent="" id="vcredist_x64.exe" display_name="vcredist_x64.exe" uninstall_display_name="" os_filter="" os_filter_min="win7" os_filter_max="win7" os_filter_lcid="" type="exe" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="True" default_continue_on_error="False" required_install="False" required_uninstall="False" selected_install="True" selected_uninstall="False" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True"> 
     <embedfile sourcefilepath="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x64\vcredist_x64.exe" targetfilepath="vcredist_x64.exe" /> 
     <installedcheck path="SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\VC\VCRedist\x64" fieldname="Installed" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="WOW64_64" type="check_registry_value" description="Installed Check" /> 
    </component> 
    <component executable="#CABPATH\%QUICKTIMEPACKAGE%" executable_silent="" executable_basic="" install_directory="" responsefile_source="" responsefile_target="" responsefile_format="none" uninstall_executable="" uninstall_executable_silent="" uninstall_executable_basic="" uninstall_responsefile_source="" uninstall_responsefile_target="" returncodes_success="" returncodes_reboot="" exeparameters="/passive" exeparameters_basic="" exeparameters_silent="" uninstall_exeparameters="" uninstall_exeparameters_basic="" uninstall_exeparameters_silent="" id="%QUICKTIMEPACKAGE%" display_name="%QUICKTIMEPACKAGE%" uninstall_display_name="" os_filter="" os_filter_min="win7" os_filter_max="win7" os_filter_lcid="" type="exe" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="True" default_continue_on_error="False" required_install="False" required_uninstall="False" selected_install="True" selected_uninstall="False" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True"> 
     <embedfile sourcefilepath="..\..\..\Prereqs\%QUICKTIMEPACKAGE%" targetfilepath="%QUICKTIMEPACKAGE%" /> 
     <installedcheck path="SOFTWARE\Apple Computer, Inc.\QuickTime" fieldname="Version" fieldvalue="%QUICKTIMEVERSION%" defaultvalue="False" fieldtype="REG_DWORD" comparison="version_ge" rootkey="HKEY_LOCAL_MACHINE" wowoption="WOW64_32" type="check_registry_value" description="Installed Check" /> 
    </component> 
    <component package="#CABPATH\YourPackageInstaller.msi" cmdparameters="" cmdparameters_silent="/qn" cmdparameters_basic="/qb-" uninstall_package="" uninstall_cmdparameters="/qb-" uninstall_cmdparameters_silent="/qn" uninstall_cmdparameters_basic="/qb-" id="YourPackageInstaller.msi" display_name="YourPackageInstaller.msi" uninstall_display_name="" os_filter="" os_filter_min="win7" os_filter_max="win7" os_filter_lcid="" type="msi" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="False" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="x64" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="True" show_progress_dialog="True" show_cab_dialog="True"> 
     <embedfile sourcefilepath="YourPackageInstaller.msi" targetfilepath="YourPackageInstaller.msi" /> 
     <installedcheck path="SOFTWARE\MyCompany Design\YourProduct YourPackage" fieldname="Version" fieldvalue="%YOURVERSION%" defaultvalue="False" fieldtype="REG_SZ" comparison="version_ge" rootkey="HKEY_LOCAL_MACHINE" wowoption="WOW64_64" type="check_registry_value" description="Installed Check" /> 
    </component> 
    </configuration> 
</configurations> 
1

Recientemente he luchado con este problema al tratar de proporcionar POS para .NET en un programa de arranque de WiX. De fábrica, el archivo POS para el ejecutable de .NET no es muy útil, especialmente cuando intento proporcionarlo como una instalación silenciosa desde otro instalador. Encontré que la mejor manera de evitar esto era proporcionar . POS para .NET de una manera más amigable ejecutable de extracción automática personalizada Esta es la solución que funcionó para mí:

  1. Ejecutar el POS para .NET ejecutable y extracto de t él archiva en un directorio local.
  2. Resalte todos los archivos y carpetas en el directorio descomprimido y, utilizando WinRAR, haga clic en "Agregar al archivo ..."
  3. En la ventana emergente, haga clic en Examinar para seleccionar dónde se guardará su archivo de salida y cambie el Archivo Nombre a algo más amigable (opcional).
  4. Haga clic en "Crear archivo SFX" en la sección Opciones de archivo; haga clic en Aceptar y se generará un archivo ejecutable en su ubicación especificada.
  5. Haga clic con el botón derecho en su nuevo archivo ejecutable y seleccione "Abrir con WinRAR".
  6. Haga clic en el icono SFX en la parte superior y luego haga clic en "Opciones avanzadas de SFX".
  7. En la pestaña de configuración vaya a "Ejecutar después de la extracción" y escriba:

    Setup.exe/ADDLOCAL tiempo de ejecución, POSDM

  8. Ir en la pestaña "Modos" y asegúrese de que "Desembalaje de carpeta temporal" es verificado, y que "Ocultar todo" está seleccionado en "Modo silencioso"
  9. Haga clic en Aceptar dos veces y WinRAR agregará su configuración al archivo ejecutable.
Seguir los pasos anteriores le permitirá empaquetar POS para .NET de una manera "fácil de usar" y ahora se puede incluir como un elemento ExePackage en su paquete que se instalará en silencio.

Espero que esto ayude a alguien.

+1

¡Necesita más votos positivos para esto! –

Cuestiones relacionadas