Зарегистрируйте BHO через установщик NSIS - PullRequest
2 голосов
/ 21 июня 2010

У меня есть IE BHO, который я упаковывал через проект установки и развертывания Visual Studio. Теперь я хочу упаковать его через установщик NSIS.

Мой BHO регистрировался следующим образом:

    [ComRegisterFunctionAttribute]
    public static void Register(Type t)
    {
        string guid = t.GUID.ToString("B");

        RegistryKey rkClass = Registry.ClassesRoot.CreateSubKey(@"CLSID\"+guid );
        RegistryKey rkCat = rkClass.CreateSubKey("Implemented Categories");

        string name = toolbarName;
        string help = toolbarHelpText;

        rkClass.SetValue(null, name );
        rkClass.SetValue("MenuText", name );
        rkClass.SetValue("HelpText", help );

        if( 0 != (style & BandObjectStyle.Vertical) )
            rkCat.CreateSubKey("{00021493-0000-0000-C000-000000000046}");

        if( 0 != (style & BandObjectStyle.Horizontal) )
            rkCat.CreateSubKey("{00021494-0000-0000-C000-000000000046}");

        if( 0 != (style & BandObjectStyle.TaskbarToolBar) )
            rkCat.CreateSubKey("{00021492-0000-0000-C000-000000000046}");

        if( 0 != (style & BandObjectStyle.ExplorerToolbar) )
            Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Toolbar").SetValue(guid,name);

    }

Хотя об этом позаботился установщик MSI, созданный VS, я хочу знать, как я могу сделать то же самое с помощью NSIS?

Любая помощь будет оценена!

Капил

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

Или вы можете использовать плагин реестра NSIS , который предоставляет вам множество полезных вспомогательных функций.

И используйте RegDLL для регистрации DLL.

1 голос
/ 21 июня 2010

Вы должны явно вызвать regsvr32.exe как во время установки (для регистрации), так и для удаления (для отмены регистрации).

например, во время установки:

Exec 'regsvr32.exe /s "$INSTDIR\your_bho.dll"'

... и во время удаления:

 Exec 'regsvr32.exe /s /u "$INSTDIR\your_bho.dll"'

... где your_bho.dll - это имя вашего BHO.Флаг /s, кстати, запрещает команде отображать диалог для вашего конечного пользователя.regsvr32.exe находится в каталоге system32, поэтому вам не нужно беспокоиться о пути к нему.

...