W moim COMie nie pojawia się nowa klasa - czy to problem z podpisem...?

0

Mowa o bibliotece, która jest dodatkiem do Worda (VSTO). Rejestruję ją w systemie za pomocą polecenia regasm z parametrem /Codebase. Generalnie działa to tak już od dłuższego czasu, pojawiła się jednak potrzeba dodania kolejnej klasy, z której będziemy mogli korzystać po stronie makr Wordowych. Niestety, gdy próbuję z niej skorzystać, otrzymuję komunikat:

Object doesn't support this property or method

Inne klasy mogę wołać normalnie, bez żadnych problemów.
Próbowałam wyrejestrowywać i zarejestrować ponownie, otrzymuję komunikat, że typy zostały zarejestrowane pomyślnie... Choć prawdę powiedziawszy martwi mnie warning:

RegAsm : warning RA0000 : Registering an unsigned assembly with /codebase can cause your assembly to interfere with other applications that may be installed on the same computer. The /codebase switch is intended to be used only with signed assemblies. Please give your assembly a strong name and re-register it.

Dllka jest podpisana... a przynajmniej tak mi się wydawało o.O Gdy wchodzę we właściwości pliku to widzę podpis i w opisie mamy "Podpis cyfrowy jest w porządku".
Natomiast signtool verify wyświetla taki błąd:

SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.

Próbowałam tego rozwiązania, ale nic nie zmieniło: https://knowledge.digicert.com/solution/SO13755.html
Jeszcze miesiąc temu signtool verfiy mówił, że wszystko ok... Word przy instalacji VSTO nie zgłasza problemów z certyfikatem.

Edit: signtool verify /pa mówi jednak, że dllka jest prawidłowo podpisana.

Czy problemy z widocznością klasy mogą wynikać z problemów z podpisem?

0

Zauważyłam jeszcze jedną niepokojącą rzecz. Wygląda na to, że numer wersji w manifeście jest nieprawidłowy:

<asmv1:assemblyIdentity name="WordTools.dll" version="1.0.1.3" publicKeyToken="abd57fb87c56197e" language="neutral" processorArchitecture="x86" type="win32" />

Tymczasem w Assembly Version jest wpisane 1.2.3.... To chyba tak nie powinno być?

Poprawiłam numer wersji poprzez wywołanie polecenia:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\mage.exe" -update WordTools.dll.manifest -Version 1.2.3.0

W pliku wygląda już ok. Nic to nie dało jeśli chodzi o widoczność nowej klasy.

0

Hmmm ale w pliku VSTO też mamy błędny numer wersji:

<assemblyIdentity name="WordTools.vsto" version="1.0.1.3" publicKeyToken="abd57fb87c56197e" language="neutral" processorArchitecture="amd64" xmlns="urn:schemas-microsoft-com:asm.v1" />

Edit: Zrobiłam update przez mage również na tym pliku, nie pomogło.

Kolejna dziwna rzecz:

Static ain As COMAddIn
Set ain = Application.COMAddIns("WordTools")

Podglądam sobie ain w watchu i widzę, że Guid jest ustawione na: : "{00000000-0000-0000-0000-000000000000}"
Oczywiście we właściwościach COMa jest inny Guid...

2

Dobra, problem okazał się być zupełnie gdzie indziej... Nawet nie chcę zbyt szczegółowo wchodzić w temat, bo na razie mam ochotę walić głową w ścianę - jak już znalazłam miejsce, o które chodzi, to znalazłam tam też mój własny komentarz: "Jak chcesz, żeby klasy były widoczne po stronie VBA to dodaj je tutaj"....

Zostawię więc tylko link dla potomnych: https://blogs.msdn.microsoft.com/andreww/2007/01/15/vsto-add-ins-comaddins-and-requestcomaddinautomationservice/
I idę dopisać do dokumentacji wielki czerwony punkt: "GDY DODAJESZ NOWĄ KLASĘ, KTÓRA MA BYĆ WIDOCZNA W VBA" -_-

1 użytkowników online, w tym zalogowanych: 0, gości: 1