2009-11-02 12 views
5

Per qualche ragione, stiamo consegnando un prodotto con la nostra GUI di installazione, il che significa che eseguiremo l'installazione di msi in modo silenzioso.Come si interagisce in modo silenzioso con l'installazione di msi? (Progredire e cancellarlo)

Utilizzando l'API MSI "MsiInstallProduct", posso installare il prodotto in silenzio, ma non ho idea di come posso ottenere i dati di avanzamento di questa installazione e come posso annullarla.

Qualcuno ha qualche idea?

risposta

6

UPDATE: Questo strumento da Wise è purtroppo non scaricabile più. Non sono sicuro se sia corretto distribuirlo. Sembrava uno strumento gratuito distribuito come parte della suite principale di Wise Package Studio, ma non penso che sia open source. Vorrei che lo pubblicassero come uno strumento open source.

I prodotti di imballaggio Wise sono stati interrotti a causa di un numero di legal issues.


io credo che si può ottenere lo stato di avanzamento tramite l'API di MSI, ma se fossi in te vorrei solo mostrare la barra di avanzamento del MSI in sé dopo aver richiamato l'installazione tramite msiexec.exe.

MSI supporta diversi livelli di installazione (GUI completa, completamente silenziosa, GUI ridotta ecc.). Nel tuo caso sembra che tu voglia un'interfaccia utente di base. Questo produce una barra di avanzamento in cui è possibile nascondere il pulsante di annullamento, e mostrare opzionalmente una finestra di completamento modale:

installare silenziosamente con barra di avanzamento, nessun pulsante e nessun dialogo modale annullare del fondo:

msiexec.exe /I "Test.msi" /QB-! 

Per evitare di dover creare manualmente queste silly righe di comando msiexec, utilizzare lo strumento msi per la riga di comando da Wise: http://www2.wise.com/filelib/WICLB.exe (non più disponibile).

enter image description here

+0

mi metterò un voto, ma non per la mia risposta. Non usiamo la GUI msi perché non è adatta allo stile del nostro prodotto, quindi forniamo una barra di progresso più interessante, tutto ciò di cui ho bisogno sono i dati di avanzamento per impostare la nostra barra. La GUI di base di msi non è accettabile. E non riesco ancora ad annullarlo dalla pura API giusto? – redjackwong

+1

Ecco un esempio di come lavorare con i tabelloni MSI e la barra di avanzamento: http://sourceforge.net/projects/msiprogramming/. Se questo non è ciò di cui hai bisogno, consulta le risorse all'indirizzo: http: //www.installsite.org –

+0

Ricordarsi di fare clic sul pulsante "Visualizza tutti i file" (altrimenti si ottiene solo una demo). –

3

è necessario specificare un gestore di interfaccia utente esterno utilizzando MsiSetExternalUI o MsiSetExternalUIRecord prima MsiInstallProduct (quest'ultimo è più bello, ma ha una versione MSI requisito più elevato). La funzione specificata verrà richiamata per ogni messaggio che Windows Installer richiede di elaborare. Questo ti darà i dati, e la possibilità di rispondere dice di annullare. Se si richiede MSI 4.5 o versione successiva, è possibile utilizzare una DLL del gestore interfaccia utente esterna incorporata, che non richiede un bootstrap.

+0

Grazie, MsiSetExternalUI funziona per questo caso ~ – redjackwong

Problemi correlati