我在VS中創建一個測試項目2012部署Excel插件使用NSIS - 註冊表問題
文件 - >新建 - >項目 - >其他語言 - >的Visual C# - >辦公 - > 2010
它的建立很好。我想在客戶機上部署此,期待在MSDN網站上我有2個選項,ClickOnce的或InstallShield
https://msdn.microsoft.com/en-us/library/bb386179(v=vs.110).aspx
我不能使用ClickOnce的,我一直要求不要使用InstallShield但NSIS 。我已經與NSIS取得了進展,但未能註冊該DLL。如果我嘗試使用Regsvr32手動註冊它,我將收到一條錯誤消息
「模塊」[filepath] TestAddin.dll「已加載,但沒有找到入口點DLLRegisterServer,請確保」[filepath] TestAddin.dll」是一個有效的DLL或OCX文件,然後再試一次。
這裏是如何我嘗試和NSIS腳本中註冊,從舊的論壇頁面取我不完全理解。
Exec 'regsvr32.exe /s "$INSTDIR\MyExcelAddin.dll"'
WriteRegStr HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin.Connect" "FriendlyName" "MyExcelAddin"
WriteRegStr HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin.Connect" "Description" "MyExcelAddin"
WriteRegDWORD HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin.Connect" "LoadBehavior" "00000003"
WriteRegDWORD HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin.Connect" "CommandLineSafe" "00000000"
更新:我現在可以創建註冊表項,執行以下操作,但該加載項仍不會在Excel
露面SetRegView 64
Exec '"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" "$INSTDIR\MyExcelAddin.dll"'
WriteRegStr HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "FriendlyName" "MyExcelAddin"
WriteRegStr HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "Description" "MyExcelAddin"
WriteRegStr HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "Manifest" "Manifest file:///$INSTDIR\MyExcelAddin.vsto|vstolocal"
WriteRegDWORD HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "LoadBehavior" "00000003"
WriteRegDWORD HKLM "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "CommandLineSafe" "00000000"
更新2:這實際上工作最終,我在NSIS腳本中以錯誤的順序做了其他事情。我沒有複製.dll文件到我試圖註冊該文件夾使用Regasm.exe
DLLRegisterServer是用於註冊的常規入口點函數導出,如果你的插件不會導出它,那麼只有你會知道如何註冊它... – Anders
Installshield和Visual Studio都可以在沒有實現DLLRegisterServer的情況下注冊該DLL,當然它們必須使用命令行來實現。 –
不知道這是否會是一個問題,但我的Excel插件,該「清單」的值就是「文件:///$INSTDIR/MyExcelAddin.vsto | vstolocal」,而不是讓「清單」上的前。 –