Riepilogo :In sostanza, quanto segue afferma:1)
Disattiva l'azione personalizzata per eseguire setup.exe
di SQL Server nel tuo attuale MSI. 2)
Crea un WiX Burn Bundle
di base per avviare SQLServer setup.exe
prima, quindi avvia il tuo MSI
generato dal progetto Visual StudioInstaller dopo. O meglio ancora, crea anche l'intero MSI in WiX. Strumenti commerciali come Programma di installazione avanzato e Installshield sono opzioni praticabili:sono dotate di supporto integrato per questo (le funzionalità variano a seconda della versione del prerequisito).
Burn Bundle-Mockup (ispirazione, più ispirazione):
Solo per provare a mostrare come funziona il markup di WiX Burn:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="MyCoolTestApp" Version="1.0.0.0"
Manufacturer="Someone" UpgradeCode="PUT-GUID-HERE">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<util:FileSearch Path="[WindowsFolder]System32\ucrtbase.dll" Variable="VCDISTINSTALLED"/>
<Chain>
<ExePackage SourceFile="vc_redist.x64.exe"
DetectCondition="VCDISTINSTALLED"
InstallCommand="/q /ACTION=Install"
RepairCommand="/q ACTION=Repair /hideconsole" />
<MsiPackage SourceFile="ShortcutDesktop.msi" />
</Chain>
</Bundle>
</Wix>
Causa tecnica :Non sono un esperto di progetti di installazione di Visual Studio - va detto - ogni volta. Tuttavia, come hai scoperto, questi progetti hanno una serie di limitazioni e stranezze. Una delle stranezze è che tutte le azioni personalizzate vengono eseguite in modalità differita e nel contesto di sistema (in esecuzione come LocalSystem) senza rappresentazione dell'utente di avvio. Questa è probabilmente la causa del problema riscontrato, come dichiari tu stesso.
Sebbene sia possibile post-elaborare l'MSI ottenuto dai progetti VS Installer, è meglio eliminare l'uso di un'azione personalizzata per avviare l'installazione di SQL Server. Maggiori dettagli di seguito. La post-elaborazione comporterebbe la modifica del tipo di azione personalizzata da 3078 a 1030, quindi la rappresentazione dell'utente è abilitata, il che significa anche che l'azione personalizzata non viene eseguita con privilegi elevati e quindi può avere successo solo se l'intero MSI è stato lanciato con privilegi elevati.
Nota :Di seguito suggerisco di utilizzare la funzione Burn (Open Source) di WiX o uno strumento commerciale equivalente e capace. La funzione Burn di WiX può essere utilizzata con file MSI creati dal progetto di installazione di Visual Studio 2017 o file MSI creati da qualsiasi altro strumento (anche file EXE). Basta collegare l'MSI generato da VS2017 al WiX Bundle (o al file EXE). WiX può ovviamente anche creare file MSI da solo (questo è lo scopo del framework). Link di avvio rapido WiX .
Caratteristiche della tecnologia MSI :L'eliminazione di altri programmi di installazione dalle azioni personalizzate MSI non è una buona pratica. Se l'altro programma di installazione è un altro MSI (e non solo un setup.exe non MSI), non è nemmeno possibile farlo in modo affidabile a causa di limitazioni tecniche (non ci sono due MSI InstallExecuteSequences
può essere eseguito contemporaneamente a causa di un mutex impostato durante l'installazione). In altre parole:le installazioni MSI simultanee sono vietate e tecnicamente impossibili.
Brucia :Accedi alla funzione Masterizza di WiX - il downloader
/ bootstrapper
/ sequencer
strumento che esegue installazioni di pacchetti in sequenza dal proprio wrapper setup.exe
. Può installare file MSI, file EXE e altri tipi di pacchetti, uno dopo l'altro senza limitazioni tecniche come quella del mutex di MSI. Seriale, non in esecuzione parallela.
Installazione di SQL Server :è possibile eseguire il kick del programma di installazione EXE di SQL Server tramite tale bundle Burn e specificare i parametri che elenchi come parametri della riga di comando, invece di farlo nel codice gestito (con i requisiti di runtime che comporta). Quindi inizi a dare il via al tuo MSI principale in seguito dallo stesso pacchetto.
Masterizza il corso accelerato :Esiste una curva di apprendimento per Burn. È "complicato" (è codice / markup - sempre complicato), ma è molto flessibile. Voglio aggiungere quel programma di installazione avanzato sembra avere un buon supporto per la distribuzione di SQL Server, anche se non ho mai avuto il tempo di indagare adeguatamente nel dettaglio. InstallShield può installare file EXE e file MSI in sequenza utilizzando i suoi progetti Suite funzione (controlla la schermata collegata). Non sono sicuro del supporto generale di SQL Server.
Alcuni link di esempio di masterizzazione :
- Bootstrapping
- Come fare per:installare .NET Framework utilizzando Burn
- Un bel esempio di cosa può fare Burn:https://github.com/frederiksen/Classic-WiX-Burn-Theme.
- Il mio markup Burn Bundle in stile "Hello World" (con ulteriori collegamenti).
- Neil Sleightholm:http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html
- Burn ti consente di scrivere la tua applicazione GUI di configurazione (avanzata):https://github.com/rstropek/Samples/tree/master/WiXSamples/CustomBurnUI (più campioni su un livello)
Alcuni collegamenti :
- Wix Burn:come impedire che Bootstrapper si installi da solo
- Esempio helloworld di Wix Burn
- Elenco completo di flag/opzioni della riga di comando per Burn/bootstrapper in WiX
- Wix Burn - modello personalizzato
Aggiungere la trasformazione del linguaggio .mst a Burn Bundle Chain?(troppi link)