wix - 如何告诉 WiX 使用哪个版本的 VsixInstaller?

标签 wix wix3 wix3.8

我想通过使用 WiX 的 msi 安装我的 VSIX。

我的wxs文件中有以下代码

<Component Id ="cmp_WiXGenPackage">
    <File Id="fil_WiXGenPackage" Source="$(var.WiXGenerator.VSIX.TargetDir)VSExtension1.vsix" KeyPath="yes" Vital="yes">
      <VSExtension:VsixPackage PackageId="WiXGenerator.VSExtension.52858d9a-5c32-4661-926d-66271a65cbba" Vital="yes" Permanent="no" />
    </File>
</Component>

当我构建项目时,我得到了预期的不错的 msi,但是当我尝试执行它时,它崩溃了。 下面是日志和显示中最有趣的部分,我认为是什么导致了错误:

MSI (s) (94:7C) [18:15:45:956]: Executing op: CustomActionSchedule(Action=vim6D68CD66793FF0B87E58724E51ABAE73,ActionType=3122,Source=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\VSIXInstaller.exe,Target=/q  "C:\Program Files (x86)\[ProductManufacturer]\WiX Generator\VSExtension\VSExtension1.vsix" /admin,)
CustomAction vim6D68CD66793FF0B87E58724E51ABAE73 returned actual error code 1001 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (94:7C) [18:15:46:862]: Note: 1: 1722 2: vim6D68CD66793FF0B87E58724E51ABAE73 3: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\VSIXInstaller.exe 4: /q  "C:\Program Files (x86)\[ProductManufacturer]\WiX Generator\VSExtension\VSExtension1.vsix" /admin 
MSI (s) (94:7C) [18:15:46:862]: Note: 1: 2205 2:  3: Error 
MSI (s) (94:7C) [18:15:46:862]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1722 
Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.  Action vim6D68CD66793FF0B87E58724E51ABAE73, location: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\VSIXInstaller.exe, command: /q  "C:\Program Files (x86)\[ProductManufacturer]\WiX Generator\VSExtension\VSExtension1.vsix" /admin 
MSI (s) (94:7C) [18:15:48:125]: Note: 1: 2205 2:  3: Error 

问题是它使用 VS 11 VSIXInstaller 并且我正在构建 VS12 VSIX。当我使用 VS12 版本的 VSIXInstaller 运行 vsix 时,它将毫无问题地安装。

真题: 有没有办法指示 WiX 使用 vs12 版本?

我知道 VSIXPackage 元素有 attributes识别版本,但只能用于低于 VSIXInstaller 的版本

我使用的是 WiX 工具集 3.8 版

附言 我知道你们中的一些人反对使用 MSI 安装 VSIX,但以上均未要求此反馈,因此请不要提供此类评论

最佳答案

VsixPackage 有两个属性,可让您设置要安装扩展的 Visual Studio 版本和 Visual Studio 的类型。例如,如果您这样设置属性:Target="integratedShell"TargetVersion="12.0",您是在告诉安装程序执行要安装到 IntegrateShell 类型的 Visual Studio 2013 的扩展。有关您可以在这些属性中设置的值的更多信息,您可以在此页面中找到它们 VsixPackage info

关于wix - 如何告诉 WiX 使用哪个版本的 VsixInstaller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20527415/

相关文章:

wix - Windows 安装程序错误 : "Object already exists"

windows - wix 3.0 意外的子元素 'Website'

Wix - 取代补丁不做任何事情

installation - 如何在WiX中至少需要两个可选组件之一?

wix - 产品 ID 和包裹 ID 之间的区别

wix - 是否可以为每个用户 MSI 提供广告快捷方式和 ProgId?

wix - 使用wix执行REGSVR32的功能

WiX:从片段中拉入 CustomTable,无需 CustomAction

Wix - 在使用蜡烛的热量输出时如何处理项目引用?

.net - NetFx45WebLink 和 NetFx45RedistLink 有什么区别