gpt4 book ai didi

visual-studio-2012 - MSI 安装的 VSPackage 仅在实验实例中加载

转载 作者:行者123 更新时间:2023-12-04 02:44:37 25 4
gpt4 key购买 nike

我的包只在实验实例中加载。我有以下包类属性:

[PackageRegistration(UseManagedResourcesOnly = true)]
[InstalledProductRegistration("#110", "#112", "3.6.1365", IconResourceID = 400)]
[ProvideMenuResource("Menus.ctmenu", 1)]
[Guid(GuidList.guidVSPackage2012PkgString)]
public sealed class VSixPackage : Package

pkgdef 文件内容:

[$RootKey$\InstalledProducts\VSixPackage]
@="#110"
"Package"="{011cc127-af13-4974-903a-9e6518b2b641}"
"PID"="3.6.1365"
"ProductDetails"="#112"
"LogoID"="#400"
[$RootKey$\Packages\{011cc127-af13-4974-903a-9e6518b2b641}]
@="VSixPackage"
"InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
"Class"="Vsix3_6_1365.VSixPackage"
"CodeBase"="$PackageFolder$\Vsix3_6_1365.dll"
[$RootKey$\Menus]
"{011cc127-af13-4974-903a-9e6518b2b641}"=", Menus.ctmenu, 1"

扩展.vsixmanifest:

<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011">
<Metadata>
<Identity Id="011cc127-af13-4974-903a-9e6518b2b641" Version="3.6.1365" Language="en-US" Publisher="Ltd." />
<DisplayName>Package 3.6.1365</DisplayName>
<Description>etc...</Description>
<Icon>Resources\Package.ico</Icon>
</Metadata>
<Installation InstalledByMsi="true" AllUsers="true">
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[11.0,12.0)" />
<InstallationTarget Version="[11.0,12.0)" Id="Microsoft.VisualStudio.Premium" />
<InstallationTarget Version="[11.0,12.0)" Id="Microsoft.VisualStudio.Ultimate" />
</Installation>
<Dependencies>
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" Version="4.5" />
<Dependency Id="Microsoft.VisualStudio.MPF.11.0" DisplayName="Visual Studio MPF 11.0" Version="11.0" />
</Dependencies>
<Assets>
<Asset Type="Microsoft.VisualStudio.VsPackage" Path="Vsix3_6_1365.pkgdef" />
</Assets>
</PackageManifest>

这些文件(包括Vsix3_6_1365.dll)安装到

"%VSInstallDir%\Common7\Ide\Extensions\Your Company\Your Product\Version"

文件夹。创建 .vsix 文件后,它会成功注册包,但我需要使用 msi 自动执行此操作。如何注册原始 Visual Studio(不是实验实例)?

更新 1:

我有几个包(不同版本)

[$RootKey$\InstalledProducts\VSixPackage]

在 .pkgdef 文件中。这可能是问题的原因吗?

更新2:

我尝试了不同的名称而不是“VSixPackage”(添加版本,如 VSixPackage3_6_1382),但这没有帮助。 这些 VSPackages 很奇怪——它们工作了一段时间——我使用 VSExtension:VsixPackage 来安装我的包——它在卸载过程中停止删除它。而且它无法注册 VS2013 的包。现在这个问题。

最佳答案

包类、包定义文件和扩展 list 上提供的属性似乎没问题。我猜扩展仅由实验配置单元加载的原因是因为 Visual Studio 在构建扩展时注册了扩展(至少在按 F5 时通过调试器运行扩展之前)。

当您通过 MSI 安装您的扩展时,您必须以编程方式注册该扩展...仅将扩展程序集文件复制到 Visual Studio 安装目录中的扩展文件夹是行不通的。如果您使用 WiX 工具集来组装 Windows 安装程序包,则可以使用 VsixPackage 元素来注册扩展。

您将在以下位置找到文档:http://wixtoolset.org/documentation/manual/v3/xsd/vs/vsixpackage.html

如果您的扩展不需要任何特殊的安装任务(例如写入注册表或设置其他工具和/或第三方组件),则不需要安装 MSI,您可以只需从 Windows 资源管理器执行 vsix 文件即可安装扩展;这将显示一个对话框,您必须在其中确认安装。

我从未尝试过手动设置扩展,但您可以尝试设置以下键(可能需要更多键;只需检查实验配置单元的配置以计算出所有必需的键和值)...

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\InstalledProducts\<package-name>
REGSZ: (Default) = #110
REGSZ: LogoId = #400
REGSZ: Package = <package-guid>
REGSZ: PID = <package-product-id>
REGSZ: ProductDetails = #112

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\BindingPaths\<package-guid>
REGSZ: <package-installation-folder-path> = ""

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0_Config\Packages\<package-guid>
REGSZ: (Default) = <package-name>
REGSZ: Class = <package-class-fullname>
REGSZ: CodeBase = <package-assembly-fullpath>
REGSZ: InprocServer32 = "C:\Windows\SYSTEM32\MSCOREE.DLL"

关于visual-studio-2012 - MSI 安装的 VSPackage 仅在实验实例中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19094551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com