Question

J'utilise Visual Studio 2008 et ont créé un projet d'installation pour mon application. L'application dispose d'une icône haute résolution (pour Vista). Il y a un bogue dans Visual Studio, et le programme d'installation crée un raccourci sur le bureau avec une icône basse résolution.

Je me suis connecté ce bogue dans Microsoft Connect ( https: // connexion. microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=338258 ) et a finalement obtenu une réponse, ce qui est d'utiliser Orca pour modifier le fichier msi et remplacer l'icône. Cette solution fonctionne très bien.

Maintenant, je veux automatiser ce processus, donc je peux l'inclure dans mon script de compilation. Est-il possible de le faire?

Était-ce utile?

La solution

Vous pouvez écrire VBS, JS (en utilisant cscript, qui est construit avec tous les Windows) pour modifier le MSI, la syntaxe est à peu près SQL comme. Voici une page MSDN qui montre différents exemples.

Autres conseils

Peut-être la solution la plus simple que j'ai trouvé pour cela était de créer un nouveau « Transform » à l'intérieur de Orca, puis d'appliquer la transformation comme une partie de mon post-construction étapes.

1) Ouvrez le fichier MSI à l'aide ORCA pour l'édition. 2) Cliquez sur « Nouvelle transformation » 3) Faire toutes les modifications applicables à vos tables MSI à l'aide de l'éditeur Orca. 4) Cliquez sur « Générer de transformation », et enregistrez le fichier. 5) Modifier vos événements de construction pour exécuter MSITRAN au cours de l'étape de post-construction. comme ça ...

MSITRAN -a (chemin d'accès au fichier de transformation) (chemin d'accès au fichier MSI)

Plus d'informations sur msitran.exe se trouve à l'adresse suivante ... MSITRAN

appliquera automatiquement vos modifications au fichier MSI une fois que votre version d'installation est terminée, ce qui élimine la nécessité de VBScript sur commande.

Je viens de le faire aussi - voici mon fichier VBScript (dans le cas où il est utile à tout le monde) ...

Dim msiInstaller
Dim msiDatabase
Dim msiView
Dim msiRecord

Dim pathToMsiFile
Dim pathToIconFile

If WScript.Arguments.Count <> 2 Then
    WScript.Echo "Usage:" & vbCrLf & "  " & WScript.ScriptName & " <path-to-msi> <path-to-icon>"
    WScript.Quit
End If

Dim pathToMsi, pathToIcon
pathToMsi = WScript.Arguments(0)
pathToIcon = WScript.Arguments(1)

Set msiInstaller = CreateObject("WindowsInstaller.Installer")

Set msiRecord = msiInstaller.CreateRecord(1)
msiRecord.SetStream 1, pathToIcon

Set msiDatabase = msiInstaller.OpenDatabase(pathToMsi, 1)
Set msiView = msiDatabase.OpenView("UPDATE Icon SET Data = ? WHERE Name <> ''")
msiView.Execute msiRecord

msiDatabase.Commit

Ce script remplace toutes les icônes de raccourci dans la base de données MSI avec une seule icône - si vous avez besoin d'être sélectif, alors vous avez un peu plus de travail à faire

.

Vous pouvez utiliser un script Perl pour modifier le package d'installation de msi. Vous pouvez utiliser Win32 OLE pour cela. Ouvrez le MSI à l'aide API Win32::OLE->new. Ouvrez la base de données MSI et d'exécuter les requêtes SQL pour faire la mise à jour.

Ce script Perl peut être utilisé dans les versions.

lien pourrait vous aider d'écrire celle requise.

Puisque vous avez l'habitude de travailler avec Orca, il suffit de sauvegarder les modifications en tant que fichier de transformation en utilisant Orca, puis l'appliquer avec « MSITRAN » en cas de construction après de votre projet d'installation.
J'utilise ceci dans un projet d'installation et il fonctionne tout simplement génial.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top