Question

J'ai un programme d'installation MSI dans lequel je dois ajouter ou modifier une propriété de texte court à partir de la ligne de commande.

Ceci doit être fait après la construction du programme d'installation. Je ne peux pas modifier le processus qui produit l'installateur en premier lieu. Il doit également être exécuté sans script à partir d’un script.

Quand je dis "propriété", " Il peut s'agir d'une propriété MSI, d'une valeur écrite dans le registre lors de l'installation, ou de tout autre mécanisme permettant d'obtenir ce court texte personnalisé dans l'application installée lors de son exécution.

Était-ce utile?

La solution

Exemple de code VBScript que vous pouvez utiliser pour mettre à jour (ou ajouter) une propriété post-génération ...

Option Explicit

Const MSI_FILE = "myfile.msi"


Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_FILE, 1)

' Update
Set view = database.OpenView ("UPDATE Property SET Value = '" & myproperty & "' WHERE Property = 'MYPROPERTY'")

' .. or Add (Insert)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('MYPROPERTY', '" & myproperty & "')")
view.Execute


Set database = Nothing
Set installer = Nothing
Set view = Nothing

Pour plus d'informations, consultez le Kit de développement logiciel (SDK) Windows Installer (élément du Kit de développement logiciel Windows ), de nombreux exemples de scripts que vous pouvez utiliser à partir de la ligne de commande pour effectuer diverses tâches de manipulation MSI, par exemple WiRunSQL.vbs vous permettent de: exécuter du SQL arbitraire contre un MSI.

Autres conseils

c:\> msiexec /i yourmsi.msi THEPROPERTYNAME=valueofproperty

Pour plus d'informations, tapez msiexec sur la ligne de commande.

EDIT: ou modifiez le fichier .msi lui-même en utilisant les instructions SQL et en mettant à jour la propriété dans la table des propriétés: http://msdn.microsoft.com/en-us/ bibliothèque / aa372021 (VS.85) .aspx http://msdn.microsoft.com/en-us/ bibliothèque / aa368568 (VS.85) .aspx

Ceci est à ajouter à la réponse de @saschabeaumont en 09. Utilise actuellement dotNet 4.0

Option Explicit

Const MSI_FILE = "myFilePath.msi"
Const PROPERTY_STRING_Value = "FooBar"

Dim installer, database, view

Set installer = CreateObject("WindowsInstaller.Installer")
Set database = installer.OpenDatabase (MSI_FILE, 1)

' Update
Set view = database.OpenView ("UPDATE Property SET Value = '" & PROPERTY_STRING_Value & "' WHERE Property = 'MYPROPERTY'")

' .. or Add (Insert)
Set view = database.OpenView ("INSERT INTO Property (Property, Value) VALUES ('MYPROPERTY', '" & PROPERTY_STRING_Value & "')")

view.Execute()
database.Commit()

Set database = Nothing
Set installer = Nothing
Set view = Nothing
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top