2

私は、Visual Studio のセットアップおよび展開プロジェクトを通じてパッケージ化していた IE BHO を持っています。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);

    }

これはVSによって作成されたmsiインストーラーによって処理されますが、NSISを使用して同じことを行う方法を知りたいですか?

どんな助けでも大歓迎です!

カピル

4

2 に答える 2

1

または、便利なヘルパー関数を多数提供するNSIS レジストリ プラグインを使用することもできます。

また、DLL の登録にはRegDLLを使用します。

于 2011-11-26T18:09:39.317 に答える
1

regsvr32.exeインストール (登録) と削除 (登録解除) の両方で明示的に呼び出す必要があります。

たとえば、インストール中:

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

...そして削除中:

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

... your_bho.dllBHO のファイル名です。ところで、/sフラグは、コマンドがエンドユーザーにダイアログを表示するのを禁止します。regsvr32.exeディレクトリにあるsystem32ので、そのパスを気にする必要はありません。

于 2010-06-21T19:23:33.230 に答える