2012-02-07 27 views
16

Qual è il modo migliore per aggiornare un'installazione MSI su Internet?Qual è il modo migliore per aggiornare un'installazione MSI su Internet?

ClickOnce non supporta gli MSI.

Ho bisogno che l'aggiornamento avvenga automaticamente su Internet, nello stesso modo in cui si verificano gli aggiornamenti di Windows.

Idealmente, vorrei che la mia applicazione rilevasse automaticamente che è disponibile un aggiornamento, scaricalo e installarlo.

Le risposte devono riguardare solo le installazioni MSI. Non mi importa se è necessario installare un servizio Windows per monitorare gli aggiornamenti.

+0

Sono curioso, l'hai mai implementato? –

risposta

12

Ecco quello che ho fatto per un cliente di recente:

L'interfaccia utente è in esecuzione come utente connesso.

Il servizio è in esecuzione come sistema. Il servizio controlla il contenuto e lo scarica in una directory temporanea. Quindi pubblicizza l'MSI utilizzando il comando/JM. L'installer può ora essere installato dall'utente non privilegiato.

Il servizio invia un messaggio IPC all'applicazione dicendo che è ora di installare. L'applicazione avvia l'installer passandogli un flag che indica di riavviare l'applicazione. L'applicazione si interrompe rilasciando i file bloccati.

Al termine dell'installazione, il flag provoca il riavvio dell'applicazione da parte dell'installatore.

Dai anche un'occhiata alla libreria wuw4. Aiuta a creare molte di queste soluzioni.

Questo è un modello complesso ma funziona molto bene. Possiedo una società che può aiutarti a realizzare questa soluzione. :)

+0

Alcune domande: è necessario avere un servizio? L'app non può controllare gli aggiornamenti all'avvio? A quale cartella Temp un servizio ha accesso? – CJ7

+1

A causa di considerazioni di sicurezza e di come funziona Windows Installer, è preferibile disporre di un processo elevato che possa creare una directory temporanea in cui l'utente non privato abbia solo accesso in lettura e pubblicizzi l'installazione da lì. Il processo dell'utente non privato può quindi avviare l'installazione e funzionerà. Se l'utente non privato controlla gli aggiornamenti all'avvio, ciò pone problemi di elevazione lungo la strada. –

+0

Se l'applicazione è molto leggera e non richiede l'installazione dei privilegi di amministratore, è possibile prendere in considerazione ClickOnce. Ma se si tratta di un'installazione per macchina che qualsiasi utente non privato dovrà aggiornare, questo modello con MSI è ciò di cui avrete bisogno. –

2

È possibile utilizzare l'utilità msiexec. Here puoi trovare un esempio.

+0

Ho bisogno di essere aggiornato consegnato automaticamente su Internet. – CJ7

1

Windows Installer non supporta gli aggiornamenti automatici e non gestisce la consegna. La società per la quale lavoro vende un prodotto con il targeting updates and more.

1

Ecco quello che vorrei fare di solito (il suo solo un concetto di come posso aggiornare il mio programma):

  • Usa Advanced Installer O qualsiasi altro MSI installer/packer supporta Command Line per confezionare i file del vostro programma aggiornato. È necessario impostare correttamente i parametri e testarlo prima di procedere al passaggio successivo.

  • Vai a Visual Studio -> seleziona il tuo progetto quindi -> proprietà -> Crea eventi.

  • Nella casella di testo "Post-Build event command line" immettere i parametri della riga di comando creati in precedenza quindi fare clic su OK.

  • Ora, quando crei il tuo progetto, visual studio impacchetterà automaticamente i tuoi file con MSI installer/packer.

  • L'ultimo passaggio è cercare FTP Client anche dalla riga di comando.

  • Impostare i parametri corretti e aggiungerlo a "Post-Build event" dopo il precedente.

  • Ora se si crea nuovamente il progetto con Visual Studio. I tuoi file verranno automaticamente imballati e poi caricati sul tuo server.

Ora i file devono essere completamente aggiornati sul server e non è più necessario preoccuparsene. Questa è la soluzione migliore che ho trovato, la sto usando e funziona come un fascino ...

MODIFICA: un'altra cosa, puoi anche aggiungere una semplice routine per cercare i nuovi aggiornamenti sul server all'interno il tuo programma qualcosa come controllare l'hash MD5 dei file o le versioni dei file ecc. una volta che la routine trova un nuovo aggiornamento dovrebbe avvisare l'utente e poi puoi dire all'utente di scaricare l'ultimo aggiornamento ecc ...

+0

Spiacente, non intendevo inviare automaticamente il pacchetto a un server. Intendo dire che un utente riceverà l'aggiornamento automatico del prodotto. – CJ7

+0

sì ed è necessario aggiornare prima i file sul server ... quindi leggere la parte di modifica. dovresti creare una routine di controllo di "aggiornamento" per verificare le versioni più recenti sul server .... – SolidSnake

0

controlli la virtualizzazione dell'app? http://www.microsoft.com/en-us/windows/enterprise/products-and-technologies/virtualization/default.aspx

Questo è un ottimo modo per trasmettere i tuoi file eseguibili/msi ai client assicurando che esegua sempre l'ultimo MSI.

+0

Puoi spiegare di cosa si tratta? Ho provato a leggere quel sito ma non riesco a capirlo. – CJ7

+0

Puoi dare un'occhiata a questo - http://blog.augustoalvarez.com.ar/2012/01/31/app-va-quick-glance-to-server-app-v-and-sequencing-server-applications / – whihathac

Problemi correlati