coo*_*roc 6 registry nsis excel-addins
我在VS 2012中创建了一个测试项目
file - > new - > project - > Other Languages - > Visual C# - > Office - > 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"
Run Code Online (Sandbox Code Playgroud)
更新:我现在可以创建注册表项执行以下操作,但加载项仍然不会显示在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"
Run Code Online (Sandbox Code Playgroud)
更新2:这实际上最终起作用,我在NSIS脚本中以错误的顺序完成了其他事情.我没有将.dll复制到我尝试使用Regasm.exe注册的文件夹
如果您使用 64 位安装的 Office 并且确定适合“所有用户”安装,则需要按如下方式调整您的注册表路径:
WriteRegStr HKLM "Software\Wow6432Node\Microsoft\Office\Excel\Addins\MyExcelAddin" "FriendlyName" "MyExcelAddin"
WriteRegStr HKLM "Software\Wow6432Node\Microsoft\Office\Excel\Addins\MyExcelAddin" "Description" "MyExcelAddin"
WriteRegStr HKLM "Software\Wow6432Node\Microsoft\Office\Excel\Addins\MyExcelAddin" "Manifest" "Manifest file:///$INSTDIR\MyExcelAddin.vsto|vstolocal"
WriteRegDWORD HKLM "Software\Wow6432Node\Microsoft\Office\Excel\Addins\MyExcelAddin" "LoadBehavior" "00000003"
WriteRegDWORD HKLM "Software\Wow6432Node\Microsoft\Office\Excel\Addins\MyExcelAddin" "CommandLineSafe" "00000000"
Run Code Online (Sandbox Code Playgroud)
否则,您可能会更好地为“当前用户”安装加载项,在这种情况下,您需要进行如下调整:
WriteRegStr HKCU "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "FriendlyName" "MyExcelAddin"
WriteRegStr HKCU "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "Description" "MyExcelAddin"
WriteRegStr HKCU "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "Manifest" "Manifest file:///$INSTDIR\MyExcelAddin.vsto|vstolocal"
WriteRegDWORD HKCU "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "LoadBehavior" "00000003"
WriteRegDWORD HKCU "Software\Microsoft\Office\Excel\Addins\MyExcelAddin" "CommandLineSafe" "00000000"
Run Code Online (Sandbox Code Playgroud)