2015-05-06 14 views
6

Ich habe ein Testprojekt in VS 2012Bereitstellen von Excel-Add-In mit NSIS - Registry Ausgabe

Datei -> Neu -> Projekt -> Other Languages ​​-> Visual C# -> Büro -> 2010

das baut gut auf. Ich möchte diese Maschinen auf den Client bereitstellen, auf der MSDN-Website Suche Ich habe 2 Optionen, Clickonce oder Install

https://msdn.microsoft.com/en-us/library/bb386179(v=vs.110).aspx

ich nicht Clickonce verwenden können, und ich bin gebeten worden, nicht install zu verwenden, aber NSIS . Ich habe Fortschritte mit NSIS gemacht, aber es kann die DLL nicht registrieren. Wenn ich versuche, es manuell mit Regsvr32 zu registrieren, bekomme ich eine Fehlermeldung

"Das Modul" [Dateipfad] TestAddin.dll "wurde geladen, aber der Einstiegspunkt DLLRegisterServer wurde nicht gefunden. Stellen Sie sicher, dass" [Dateipfad] TestAddin.dll“ist eine gültige DLL oder OCX-Datei und dann erneut versuchen.

hier ist, wie ich versuche, und registrieren Sie innerhalb des NSIS-Skript, von einer alten Forum Seite genommen, die ich nicht ganz verstehen.

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" 

Update: ich kann jetzt Registrierungseinträge Sie folgendermaßen vorgehen, aber die Add-in noch nicht angezeigt in Excel

erstellen
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" 

Update 2: Das funktionierte schließlich, ich hatte andere Dinge in der falschen Reihenfolge im NSIS-Skript gemacht. Ich habe die .dll nicht in den Ordner kopiert, den ich registrieren wollte, indem ich Regasm.exe

+0

DLLRegisterServer ist der normale Einstiegspunktfunktion Export für die Registrierung, wenn Ihre Addin nicht exportieren es dann nicht weiß, Sie würden nur, wie es registrieren ... – Anders

+0

Installshield und Visual Studio kann sowohl die DLL registrieren, ohne DLLRegisterServer implementiert, sicher müssen sie über die Befehlszeile zu tun, so werden. –

+0

Sie wissen nicht, ob dies würde ein Problem sein, aber für meine Excel Plug-in, das „Manifest“ Wert ist nur „file: ///$INSTDIR/MyExcelAddin.vsto | vstolocal“, wie auf der Vorderseite mit „Manifest“ im Gegensatz . –

Antwort

0

Wenn Sie eine 64-Bit-Installation von Office verwenden und sicher sind, dass dies für "alle Benutzer installiert werden soll" “Ihre Registrierungspfade müssten angepasst werden, wie folgt:

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" 

Andernfalls könnten Sie mehr Glück haben das Add-in für die Installation‚aktuellen Benutzers‘, in dem Fall, dass Sie anpassen müssen würde wie folgt :

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" 
+0

, auch wenn Sie für 32-Bit installieren treffen und sind auf einem 64-Bit-Maschine, die Registrierungsschlüssel Schreiben automatisch auf Software \ Wow6432Node \ Microsoft gehen, 64 mit SetRegView sie Software \ Microsoft setzen wird. –

+1

Ah, das vereinfacht die Dinge so, dass Sie sich nicht darum kümmern müssen, Ihr Skript bei der erkannten Installation zu verzweigen. Doch alle meine Add-ons auf unter HKCU befindet, und Microsoft sagt, dass HKLM kann nur in „bestimmten Szenarien“ verwendet werden, was immer das bedeutet: https://msdn.microsoft.com/en-us/library/bb386106(v = vs.110) .aspx – mysteryegg