2009-08-16 18 views
5

Sono relativamente nuovo a WIX. Bare con me.Programma di installazione WIX: aggiunta di POS come prerequisito

desidero installare Microsoft POS (Point of service) con il mio programma di installazione, dopo l'installazione di .NET FX, SQL Compact Edition del server, ecc

Sono disposto a fornire l'exe scaricato con installer (non c'è bisogno di farlo dal web) .

Ho trovato questo link. L'articolo nel link indica che è necessario chiamare l'installazione con alcuni parametri. Ma non ho idea di come fare questo Wix saggio. In secondo luogo, non sono sicuro che sia anche il modo giusto di farlo. (forse è necessario un modulo di unione?)

Qualcuno sa?

Grazie Ariel

risposta

4

Wix produce file MSI, e non è possibile avviare un programma di installazione da all'interno di un MSI. Se trovi un modulo unione per POS puoi inserirlo nel tuo Wix. Altrimenti dovrai usare un bootstrapper per installare prima POS e poi avviare il tuo MSI (come DotNetInstaller).

+0

Sì, crea un MSI - ma è comunque possibile chiamare applicazioni esterne, anche quelle sono solo EXE. Certo, un modulo di fusione sarebbe il modo migliore per andare, ma se è disponibile solo un EXE, questo può essere chiamato anche tramite un'azione personalizzata! –

+2

Non se quell'EXE è in realtà un bootstrapper che a sua volta invocherà un MSI. La mia comprensione era che l'installatore POS era in realtà un bootstrapper ... ma potrei sbagliarmi. – Nestor

+0

Ah sì - buon punto. Se l'installazione POS è effettivamente un MSI, allora dovresti avere un modulo di unione –

0

Se non è possibile ottenere un modulo di unione (che sarebbe la soluzione preferita, se l'articolo è reso disponibile dall'editore), è possibile includere un EXE con l'installazione e quindi eseguirlo durante l'installazione di WiX come azione personalizzata.

Dal excellent tutorial on WiX a Tramontana, ecco una page on custom actions e come configurarli - che, fondamentalmente, necessario definire un elemento <CustomAction> nel file WiX e specificare cosa fare quando è eseguito:

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

Questa volontà avvia un file che hai appena installato come parte della tua app e che fa riferimento nello script WiX come FoobarEXE.

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

Questo sarebbe fare riferimento a un file binario (per esempio un file EXE), che si includere nel pacchetto di installazione WiX (MSI o CAB), ma che non è stato installato come parte dell'installazione, e che è stata estratta come file binario.

Una volta che sapete che cosa farete, è necessario definire quando nella sequenza delle fasi di installazione, questa azione personalizzata deve essere eseguita:

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

Qui, l'azione personalizzata denominata LaunchFile verrà eseguito dopo l'installazione è stata finalizzata, ma solo, se è stato stabilito che l'app non è stata ancora installata.

Quindi, immagino, dovresti essere in grado di fare ciò che ti stai sforzando di fare con un'azione personalizzata in WiX - consulta lo WiX 2.0 documentation e lo Steven Bone's blog post series per ulteriori informazioni.

Spero che questo aiuti!

Marc

+0

Non è possibile utilizzare Windows Installer mentre è già in esecuzione. Questo è un caso: il programma di installazione POS è un exe wrapper che richiama Windows Installer, quindi non è possibile utilizzare l'exe come azione personalizzata durante un'altra installazione. –

0

È un dotnetinstaller uso, l'allegato è un file XML di esempio.

Eseguire InstallerEditor.exe e aprire il file xml di esempio, modificarlo in base alle proprie esigenze, quindi eseguire InstallerLinker.exe in questo modo: InstallerLinker.exe/Configurazione: "c: \ percorso \ al \ proprio \ prodotto.xml "/ Output: "c: \ lavoro \ 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

recente ho lottato con questo problema durante il tentativo di fornire POS per .NET in un bootstrapper WiX. Fuori dalla scatola il POS per. NET eseguibile non è molto utile, soprattutto quando si tenta di fornire come installazione silenziosa da un altro programma di installazione. Ho trovato il modo migliore per ovviare a questo è stato quello di fornire . POS for .NET in un più amichevole eseguibile personalizzato autoestraente Questa è la soluzione che ha funzionato per me:

  1. Eseguire il POS for .NET eseguibile ed estratto di t file in una directory locale.
  2. Evidenzia tutti i file e le cartelle nella directory decompressa e, utilizzando WinRAR, fai clic su "Aggiungi all'archivio ..."
  3. Nella finestra visualizzata fai clic su Sfoglia per selezionare dove verrà salvato il file di output e modificare l'Archivio Dai un nome a qualcosa di più amichevole (opzionale).
  4. Fare clic su "Crea archivio SFX" nella sezione Opzioni di archiviazione; fare clic su OK e un file eseguibile verrà generato nella posizione specificata.
  5. Fare clic con il tasto destro sul nuovo eseguibile e selezionare "Apri con WinRAR".
  6. Fare clic sull'icona SFX in alto e quindi fare clic su "Opzioni avanzate SFX".
  7. Nella scheda Impostazioni andare a "Run dopo estrazione" e inserire:

    Setup.exe/ADDLOCAL Runtime, POSDM

  8. Vai alla scheda "Modalità" e assicurarsi che "decompresso in cartella temporanea" è selezionato e che "Nascondi tutto" è selezionato in "Modalità silenziosa"
  9. Fare clic su OK due volte e WinRAR aggiungerà le impostazioni al file eseguibile.
Seguendo i passaggi sopra riportati sarà possibile confezionare POS per .NET in modo "bootstrap-friendly" e ora può essere incluso come elemento ExePackage nel bundle che verrà installato automaticamente.

Speriamo che questo aiuti qualcuno.

+1

Hai bisogno di più upvotes per questo! –

Problemi correlati