2010-02-04 6 views
3

J'essaye de faire un script qui obtient des informations sur certains fichiers MSI et MST et les écris dans un fichier texte. J'ai réussi à lire les fichiers MSI. Cependant, je reçois le message suivant.Lire un fichier MST avec vbscript

 
Msi API Error 80004005: OpenDatabase, DatabasePath, OpenMode 
1:2219 2: 3:4: 

j'ouvrir le fichier comme celui-ci

 
Set installer = Wscript.CreateObject("WindowsInstaller.Installer") : CheckError 
Dim database : Set database = installer.OpenDatabase(FileName, msiOpenDatabaseModeReadOnly) : CheckError 

Il fonctionne très bien avec les fichiers MSI. Je crois que les fichiers MST devraient être lus différemment.

Comment lire un fichier MST en utilisant vbscript?

Répondre

3

Je ne me suis pas essayé, mais selon MSDN, pour afficher un fichier de transformation (MST), vous devez ouvrir votre base de données MSI et ensuite utiliser la méthode ApplyTransform avec le paramètre msiTransformErrorViewTransform. Cela vous donnera une table temporaire _TransformView, que vous pouvez interroger pour obtenir les informations désirées.

Ainsi, votre code devrait ressembler à ceci:

Const msiOpenDatabaseModeReadOnly = 0 
Const msiTransformErrorViewTransform = 256 
Dim installer, database 

Set installer = CreateObject("WindowsInstaller.Installer") : CheckError 
Set database = installer.OpenDatabase(MSIFileName, msiOpenDatabaseModeReadOnly) : CheckError 
database.ApplyTransform MSTFileName, msiTransformErrorViewTransform : CheckError 
+0

Après avoir fait quelques recherches, je devais faire exactement ce que vous proposez. La bonne chose est que si vous ne validez pas les modifications appliquées par le fichier MST, le fichier MSI reste le même sur le disque. – Omar