2013-09-30 3 views
3

Мой пакет загружен только в Experimental Instance. я следующий класс пакет атрибутов:MSI установлен VSPackage загружен только в экспериментальном экземпляре

[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" 

extension.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 (а не экспериментальной копии)?

Update1:

У меня есть несколько пакетов (различные версии) с

[$RootKey$\InstalledProducts\VSixPackage] 

в .pkgdef файле. Может ли это быть причиной проблемы?

Update2:

Я пробовал разные имена вместо "VSixPackage" (добавлена ​​версия как VSixPackage3_6_1382), но это не помогло. Странно, что эти VSPackages - они работали некоторое время - я использовал VSExtension: VsixPackage для установки моего пакета - он прекратил удалять его во время удаления. И он не смог зарегистрировать пакет для VS2013. Теперь эта проблема.

ответ

4

Предоставленные атрибуты класса пакета, файла определения пакета и манифеста расширения, похоже, в порядке. Я думаю, причина, по которой расширение загружается только экспериментальным ульем, заключается в том, что Visual Studio регистрирует расширение при его создании (по крайней мере, до того, как вы запустите расширение через отладчик при нажатии F5).

При установке расширения через MSI вы должны зарегистрировать расширение программно ... просто копирование файлов сборки расширения в папку расширения в каталоге установки Visual Studio не работает. Если вы используете набор инструментов WiX для сборки пакета установщика Windows, вы можете использовать элемент VsixPackage для регистрации расширения.

вы обнаружите документацию по адресу: http://wixtoolset.org/documentation/manual/v3/xsd/vs/vsixpackage.html

Если расширение не требует каких-либо специальных задач установки (например, запись в реестре или настройке других инструментов и/или компонентов сторонних производителей), MSI установка не требуется, вместо этого вы можете установить расширение, просто выполнив файл vsix из Проводника Windows; это покажет диалог, в котором вы должны подтвердить установку.

Я никогда не пытался настроить расширение вручную, но вы могли бы попытаться установить следующие ключи (возможно, потребуется еще немного, просто просмотрите конфигурацию экспериментального улья, чтобы увидеть все необходимые ключи и значения) ...

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"