2010-08-06 4 views
8

Sto tentando di aggiungere una funzionalità all'app Winforms che stampa il numero di versione sulla schermata principale. Al momento ho questo:Numero versione .NET (versione programma di installazione)

txtVersion.Text = ProductVersion.ToString(); 

Il che mi dice che la versione del programma - cosa buona e giusta.

Tuttavia, ciò che mi piacerebbe fare è raccogliere la versione del programma di installazione che è stato utilizzato per creare il file msi. C'è un modo per interrogare questo dal programma installato, o per trasferire le informazioni durante l'installazione in qualche modo?

risposta

3

Sembra che tu voglia il ProductVersion property. Puoi ottenerlo in fase di esecuzione chiamando lo ::MsiGetProductInfo() function fornendo il ProductCode per l'MSI che ti ha installato.

Se non funziona per voi, quindi scrivere la ProductVersion su una chiave del Registro di sistema e leggere che in fase di esecuzione è abbastanza popolare. È possibile utilizzare la chiave del Registro di sistema per risolvere i problemi ICE38 descritti anche qui: http://robmensching.com/blog/posts/2007/4/27/How-to-create-an-uninstall-shortcut-and-pass-all-the

+0

Ma il ProductCode non viene aggiornato ogni volta che viene aumentato il numero di versione? –

+0

Se si eseguono aggiornamenti importanti, sì. Se si utilizzano gli aggiornamenti principali, è possibile utilizzare :: MsiEnumRelatedProducts() e passare il codice di aggiornamento (che non dovrebbe essere modificato) per ottenere ProductCode, quindi utilizzare le altre API. Ancora una volta, non banale ma neanche molto difficile. –

0

È possibile salvare la versione in una chiave del Registro di sistema durante l'installazione e richiedere la chiave del Registro di sistema dal programma.

0

Si può benissimo fare dal vostro programma di installazione (MSI) attraverso azioni personalizzate utilizzando Wix3

seguenti link si possono ottenere iniziato

WIX at Sourceforge

Wix Tutorial

+1

L'azione personalizzata non è necessaria per questo, c'è [ProductVersion] integrato. Le azioni personalizzate dovrebbero essere evitate a tutti i costi. –

1

E 'meglio non prendere app versione dal programma di installazione, ma prendere la versione del programma di installazione dall'app (AssemblyInfo.cs), imo.