2010-06-21 143 views
2

我有一個IE BHO,我通過Visual Studio安裝和部署項目打包。我現在想要通過NSIS安裝程序將其打包。通過NSIS安裝程序註冊BHO

我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一樣嗎?

任何幫助,將不勝感激!

卡皮爾

回答

1

必須明確兩個安裝過程中調用regsvr32.exe(註冊)和清除(註銷)。

例如

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

...和拆卸過程:安裝過程中

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

...其中your_bho.dll是您的BHO文件名。 /s標誌btw禁止該命令向最終用戶顯示對話框。 regsvr32.exe位於system32目錄中,因此您無需擔心路徑。