Pregunta

Estoy usando VisualStudio2005 y una vdproj para crear un simple archivo MSI. Necesito pasar en la propiedad REINSTALLMODE cuando inicio la misma.

Sé que esto puede hacerse a través de línea de comandos, así: msiexec.exe /i foo.msi REINSTALLMODE=amus

Sin embargo, si un usuario decide hacer clic en el msi directamente (de iniciar el asistente), la propiedad no se pasa. ¿Es posible hacer esto a través de la VS y vdproj?

Algunas opciones que he investigado:

  • Cuando construyo el MSI a través de VS, sino que también produce un setup.exe. ¿Hay una manera de pasar la propiedad REINSTALLMODE a través de este tal vez?
  • He instalado Orca, lo que me permite ver / editar la tabla Property del MSI. Podría agregar que de esta manera, pero entonces tendría que añadir que cada vez que hago un MSI construir.

Gracias por cualquier consejo.

¿Fue útil?

Solución

Lamentablemente, no puedo encontrar una manera de establecer otras propiedades MSI justo en VStudio.

Sin embargo, un método que se debe trabajar es la siguiente:

  1. Uso de Orca para crear un archivo de transformación (MST) que sólo cambia la propiedad REINSTALLMODE. (En pocas palabras, se edita la propiedad y guarda como una nueva transformación, a continuación, utilizar el "Generar Transform" comando para crear el MST.)
  2. Esta transformada puede ser aplicado directamente a su MSI utilizando el msitran.exe comando (disponible en el mismo SDK de Windows Installer donde encontraste Orca).
  3. Usted podría: (A) encontrar una manera de tener Visual Studio siempre ejecutar su comando MSITRAN inmediatamente después de la MSI construir, o (B) acaba de ejecutar su MSITRAN manualmente (desde un archivo por lotes o tal) después de la construcción, pero antes de la prueba.

Otros consejos

He encontrado una manera más automatizada para hacer esto.

Crear un script llamado add_reinstall_prop.vbs (ejemplo) con el 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

Añadir un evento posterior a la generación a su proyecto de instalación llamar al script con lo siguiente:

add_reinstall_prop.vbs $(BuiltOuputPath)

Esto añadirá automáticamente la entrada deseada para el MSI construido. A continuación, puede comprobarlo con Orca para ver la entrada ahora se añade automáticamente después de construcción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top