Ho creato un progetto di test in VS 2012 file diDistribuzione di Excel Add-In utilizzando NSIS - problema del Registro di sistema
-> Nuovo -> Progetto -> Altre lingue -> Visual C# -> Ufficio -> 2010
che costruisce bene. Vorrei distribuire questo sulle macchine client, guardando sul sito MSDN ho 2 opzioni, ClickOnce o InstallShield
https://msdn.microsoft.com/en-us/library/bb386179(v=vs.110).aspx
non posso usare ClickOnce, e mi è stato chiesto di non usare installshield ma NSIS . Ho fatto progressi con NSIS ma non riesce a registrare la DLL. Se provo a registrarlo manualmente utilizzando Regsvr32, visualizzerò un messaggio di errore
"Il modulo" [filepath] TestAddin.dll "è stato caricato ma il server DLLRegisterServer non è stato trovato." [Percorso file] TestAddin.dll" è un file DLL o OCX valido e riprovare.
ecco come lo provo e registrare all'interno dello script NSIS, preso da una vecchia pagina del forum che io non capisco pienamente.
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"
Aggiornamento: ora posso creare voci di registro come segue ma il componente aggiuntivo non verrà ancora visualizzato in 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"
aggiornamento 2: questo in realtà ha funzionato alla fine, avevo fatto altre cose nell'ordine sbagliato nello script NSIS. Non avevo copiato il file .dll nella cartella che stavo tentando di registrare utilizzando Regasm.exe
DLLRegisterServer è la normale esportazione di funzione del punto di ingresso per la registrazione, se il tuo addin non lo esporta quindi solo tu sapresti come registrarlo ... – Anders
Installshield e visual studio possono entrambi registrare la DLL senza DLLRegisterServer implementato, sicuramente devono usare la riga di comando per farlo. –
Non so se questo sarebbe un problema, ma per i miei plugin Excel, il valore "Manifest" è solo "file: ///$INSTDIR/MyExcelAddin.vsto | vstolocal" invece di avere "Manifest" sul fronte . –