2015-05-06 26 views
6

VS 2012dağıtma Excel Eklentisi NSIS kullanarak -> Yeni - -> proje -> Diğer Diller -> Visual C# -> Ofis -> 2010</p> <p>Sicil sorunu

dosya bir test projesi oluşturdu hangi iyi oluşturur. Ben 2 seçenek ClickOnce veya ClickOnce kullanamaz

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

InstallShield'i var ve InstallShield'i ama NSIS kullanmamayı istendi MSDN Web sitesinde bakarak, istemci makinelerde bu dağıtmak istiyorum . NSIS ile ilerleme kaydettim ancak dll'yi kaydettiremedim. Regsvr32 kullanarak el ile kaydettirmeyi dener ve bir hata iletisi alırım

"" [filepath] TestAddin.dll "modülü yüklendi ancak DLLRegisterServer giriş noktası bulunamadı." [Dosya yolu] olduğundan emin olun. TestAddin.dll" geçerli bir DLL veya OCX dosyası ve yeniden deneyin.

burada

, eski bir forum sayfasından alınmış ben tam anlamıyorum hangi nasıl denemek ve NSIS komut içinde kayıt olduğunu.

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" 

Güncelleştirme: Artık aşağıdakileri yaparak kayıt defteri girişleri oluşturabilirim ancak eklenti hala excel'de görünmeyecek

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: Bu aslında eninde sonunda NSIS komut dosyasında yanlış sırada başka şeyler yapmıştım. Bunun bütün kullanıcılar" için yüklü olması uygundur eminiz Office 64-bit kurulumunu kullanan ve durumda regasm.exe

+0

DLLRegisterServer, kayıt için normal giriş noktası işlev dışa aktarma yöntemidir. senin addin o zaman sadece bunu kaydetmek için bilecekti ... – Anders

+0

Installshield ve görsel stüdyosu DLLRegisterServer uygulanmadan DLL kaydedebilir, mutlaka bunu yapmak için komut satırını kullanarak olmalıdır. –

+0

Bunun bir sorun olup olmayacağını bilmiyorum, ancak benim Excel eklentilerim için "Manifest" değeri sadece "Dosya: ///$INSTDIR/MyExcelAddin.vsto | vstolocal" dir. . –

cevap

0

kullanarak Kayıt olmak çalışıyordu klasöre .dll kopyalanmış olmasaydı aşağıdaki gibi düzenleme yapmanız gerekir ki bu durumda geçerli kullanıcı '"

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" 

Aksi takdirde daha şanslı için eklentiyi yükledikten olabilir, aşağıda belirtilen şekilde bir kayıt defteri yolları ayarlanması gerekir' :

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

32 bit excel için kurulum yapıyorsanız ve 64 bit makinede çalışıyorsanız, kayıt defteri anahtarlarının yazılması SetRegView 64 kullanılarak otomatik olarak Software \ Wow6432Node \ Microsoft'a gidecektir. –

+1

Ah, bu, algılanan yüklemede komut dosyanızın dallanması hakkında endişelenmenize gerek kalmayacak şekilde basitleştiriyor. Ancak, HKCU altında bulunan tüm eklentilerim ve Microsoft, HKLM'nin yalnızca "belirli senaryolarda" kullanılabileceğini söylüyor, bunun anlamı ne olursa olsun: https://msdn.microsoft.com/en-us/library/bb386106(v = vs.110) .aspx – mysteryegg