J'ai un installateur MSI dans lequel je dois ajouter ou modifier une propriété de texte courte à partir de la ligne de commande. P>
Cela 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 tête d'un script. P>
Quand je dis "propriété", il pourrait s'agir d'une propriété MSI, une valeur qui est écrite dans le tableau à l'installation ou tout autre mécanisme pouvant obtenir ce court texte personnalisé dans l'application installée lorsqu'elle s'exécute. < / p>
3 Réponses :
c:\> msiexec /i yourmsi.msi THEPROPERTYNAME=valueofproperty For more information type msiexec at the commandline.EDIT: or change the .msi file itself by using sql statements and updating the property in the properties table: http://msdn.microsoft.com/en-us/library/aa372021(VS.85).aspx http://msdn.microsoft.com/en-us/library/aa368568(VS.85).aspx
Je pensais que cela s'installe avec une nouvelle propriété. Je ne veux pas installer, je dois modifier le fichier MSI.
Je ne pense pas que cela méritait le bowvote, car cela correspond aux critères spécifiés par la question de OP. Post-Build, est une propriété MSI et est certainement "tout autre mécanisme qui peut obtenir ce court texte personnalisé dans l'application installée lorsqu'elle s'exécute". Cela ne modifie pas le MSI lui-même, mais cela au moment de l'exécution de l'installateur est effectivement le même résultat.
Exemple VBScript que vous pouvez utiliser pour mettre à jour (ou ajouter) une propriété post-build ... Pour plus d'informations, consultez le programme d'installation de Windows SDK (une partie du Windows SDK ) P> Il y a un groupe d'exemples de scripts que vous pouvez utiliser à partir de la ligne de commande pour faire diverses tâches de manipulation MSI p> par exemple wirunsql.vbs code> permet d'exécuter SQL arbitraire contre un MSI . p> p>
N'oubliez pas de mettre à jour le code de paquet dans le flux d'informations récapitulatif lorsque vous modifiez le package. Lors de la modification de la valeur de la propriété, il est peu probable que des problèmes réels, même si vous publiez plusieurs fichiers .msi avec différentes valeurs, c'est toujours quelque chose que vous devez faire.
J'ai seulement constaté que je dois mettre à jour les informations récapitulatives lors de la création de Transforms, une raison pour laquelle vous devez mettre à jour pour tous les changements?
Je ne peux même pas mettre à jour une variable avec ce script et obtenir une erreur d'exécution "La variable est indéfinie". J'ai vérifié dans ORCA la propriété est définie.
Je sais que c'est vieux mais modifié pour ajouter de la base de données.chit.
Ceci est à ajouter à la réponse de @saschabeaMont dans '09. En utilisant 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
En quelque sorte, la dernière dernière publiée par @asarenski a travaillé, mais la précédente de SaschabeaMont n'a fait aucun changement de MSI. +1
En effet, @saschabeaMont a oublié d'ajouter base de données.commit () code>