Domanda

Sono utilizzando VisualStudio2005 e un vdproj per creare un semplice file MSI. Ho bisogno di passare nella proprietà REINSTALLMODE quando lo lancio.

So che questo può essere fatto tramite riga di comando, in questo modo: msiexec.exe /i foo.msi REINSTALLMODE=amus

Tuttavia, se un utente sceglie di fare clic sul msi direttamente (avviare la procedura guidata), la proprietà non è passata. E 'possibile fare questo attraverso il VS e vdproj?

Alcune opzioni ho indagato:

  • Quando costruisco il MSI tramite VS, produce anche una setup.exe. C'è un modo per passare la proprietà REINSTALLMODE attraverso questo forse?
  • Ho installato Orca, che mi permette di visualizzare / modificare la tabella di proprietà del Msi. Potrei aggiungere in questo modo, ma poi avrei dovuto aggiungere che ogni volta che faccio un MSI costruire.

Grazie per qualsiasi consiglio.

È stato utile?

Soluzione

Purtroppo, non riesco a trovare un modo per impostare altre proprietà MSI proprio nel VStudio.

Tuttavia, un metodo che dovrebbe funzionare è questo:

  1. Usa Orca per creare una trasformazione (MST), che cambia solo il REINSTALLMODE proprietà. (In breve, si modifica la proprietà e salvare come una nuova trasformazione, quindi utilizzare il "Generate Transform" comando per creare il MST.)
  2. Questo trasformare può essere applicato direttamente sul tuo MSI utilizzando il comando MSITRAN.EXE (disponibile nello stesso SDK di Windows Installer dove hai trovato Orca).
  3. Si potrebbe o: (A) trovare un modo per disporre di Visual Studio eseguire sempre il vostro comando MSITRAN subito dopo il MSI costruire, o (B) basta eseguire il MSITRAN manualmente (da un file batch o simili), ma dopo la costruzione prima del test.

Altri suggerimenti

Ho trovato un modo più automatizzato per fare questo.

Creare uno script denominato add_reinstall_prop.vbs (esempio) con il folowing:

set objArgs = WScript.Arguments
set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase(objArgs(0), 1)
s_SQL = "INSERT INTO Property (Property, Value) Values( 'REINSTALLMODE', 'amus')"
set o_MSIView = o_DataBase.OpenView( s_SQL)
o_MSIView.Execute
o_DataBase.Commit

Aggiungi un evento di post-generazione per il vostro progetto di installazione di chiamare lo script con il seguente:

add_reinstall_prop.vbs $(BuiltOuputPath)

Questo aggiungerà automaticamente la voce desiderata al MSI costruito. È quindi possibile controllare con Orca per vedere la voce è ora aggiunto automaticamente dopo generazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top