En passant REINSTALLMODE à un fichier MSI
-
20-09-2019 - |
Question
Je suis en utilisant VisualStudio2005 et un vdproj pour créer un simple fichier MSI. Je dois passer dans la propriété REINSTALLMODE quand je le lance.
Je sais que cela peut se faire via la ligne de commande, comme suit:
msiexec.exe /i foo.msi REINSTALLMODE=amus
Cependant, si un utilisateur choisit de cliquer directement le msi (lancement de l'assistant), la propriété n'est pas passé. Est-il possible de le faire via le VS et vdproj?
Quelques options que j'ai étudiés:
- Lorsque je construis le MSI via VS, il produit également un setup.exe. Est-il possible de transférer la propriété REINSTALLMODE par ce peut-être?
- J'ai installé Orca, qui me permet de visualiser / modifier la table de propriété du MSI. Je pourrais ajouter cette façon, mais je dois l'ajouter à chaque fois que je fais un MSI construire.
Merci pour tout conseil.
La solution
Malheureusement, je ne peux pas trouver un moyen de définir d'autres propriétés MSI droite VStudio.
Néanmoins, une méthode qui devrait fonctionner est la suivante:
- Utilisez Orca pour créer une transformation (MST) qui changent seulement le REINSTALLMODE de la propriété. (En bref, vous modifiez la propriété et enregistrer en tant que nouvelle transformation, puis utilisez la commande « Générer Transformer » pour créer le MST.)
- Cette transformée peut être appliquée directement sur votre MSI en utilisant le
Autres conseils
J'ai trouvé une manière plus automatisée pour le faire.
Créer un script nommé add_reinstall_prop.vbs (par exemple) avec le 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
Ajouter un événement post-build à votre projet d'installation appelant le script qui suit:
add_reinstall_prop.vbs $(BuiltOuputPath)
Ceci ajoutera automatiquement l'entrée souhaitée à la MSI construite. Vous pouvez ensuite vérifier avec Orca pour voir l'entrée est maintenant ajoutée automatiquement après la compilation.