Msi 安装程序被 vsixinstaller 错误“1009”阻止:InstallByMsiException

Msi Installer blocked by vsixinstaller error "1009": InstallByMsiException

我有一个 Wix 安装程序来安装我的 visual studio 扩展 (vsix) + 相关文件。但是,当我在 "Install Targets" 下的 vsixmanifest 中勾选 "This VSIX is installed by Windows Installer" 复选框时(这会将属性 "InstalledByMsi" 添加到标签并将其值设置为 "true"),安装程序退出并且我在日志中发现以下错误:

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)

快速 google 告诉我来自 VSIXInstaller.exe 的错误 1009 称为 InstallByMsiException。

未选中此复选框时它工作得很好,但这意味着 visual studio 允许用户通过扩展管理器卸载扩展,这将不包括 vsix 之外的文件或由创建的注册表项windows 安装程序。

有没有我遗漏的设置?我可以寻找什么?

所以事实证明,如果您通过 msi 安装程序安装 vsix 文件,您应该自己提取文件并手动放置它们。如果您为所有用户安装,这很好用,但我不确定如果您想安装到 AppData,该怎么做,因为扩展路径似乎是在该实例中自动生成的。

Wix Toolkit 具有用于安装 vsix 文件的良好包装函数这一事实具有误导性,因为它不会自动解压 vsix 文件并且无法安装具有 InstalledByMsi 属性集的 vsix