2017-06-22 3 views
1

J'ai un programme d'installation Wix pour installer mon extension de studio visuel (vsix) + fichiers associés. Toutefois, lorsque je coche la case à cocher "Ce VSIX est installé par Windows Installer" dans le vsixmanifest sous "Installer les cibles" (ceci ajoute l'attribut "InstalledByMsi" à la balise et définit sa valeur sur "true") le programme d'installation se ferme. l'erreur suivante dans le journal:Msi Installer bloqué par l'erreur vsixinstaller "1009": InstallByMsiException

MSI (s) (7C:2C) [12:47:13:966]: Executing op: CustomActionSchedule(Action=viuD024AF088F5BE8AD5BD310C0F79AE3DF,ActionType=1074,Source=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\VSIXInstaller.exe,Target=/q "C:\Users\me\AppData\Local\My Company\MyPlugin\MyPlugin.vsix",) 
CustomAction viuD024AF088F5BE8AD5BD310C0F79AE3DF returned actual error code 1009 (note this may not be 100% accurate if translation happened inside sandbox) 

Un rapide Google me montre que l'erreur de 1009 VSIXInstaller.exe est appelé InstallByMsiException. Cela fonctionne très bien avec cette case décochée, mais cela signifie que Visual Studio permet aux utilisateurs de désinstaller l'extension via le gestionnaire d'extensions, qui n'inclut pas les fichiers en dehors du vsix ou les entrées de registre créées par le programme d'installation Windows.

Y a-t-il un réglage quelque part que j'ai manqué? Que puis-je rechercher?

Répondre

1

Il s'avère donc que si vous installez un fichier vsix via un programme d'installation msi, vous devez extraire les fichiers vous-même et les placer manuellement. Cela fonctionne correctement si vous installez pour tous les utilisateurs, mais je ne sais pas quoi faire dans le cas où vous souhaitez installer AppData, car les chemins d'extension semblent être générés automatiquement dans cette instance.

Le fait que la boîte à outils Wix a une belle fonction wrapper pour l'installation des fichiers VSIX est trompeur car il ne sera pas automatiser le déballage d'un fichier VSIX et ne peut pas installer un VSIX avec l'attribut InstalledByMsi défini