Wir haben ein Produkt entwickelt, das ein Standard-VSTO-Add-In ist (Word 2010 und Word 2013, nur x86). Standardmäßig wird es bei der Installation für alle Benutzer installiert (dh die Add-In-Registrierungseinträge werden in HKLM eingefügt - HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node]\Microsoft\Office\Word\Addins
).MS Office Word VSTO "Laden bei Bedarf"
Wenn der Wert für die LoadBehavior
reg Schlüssel zu 0x3
(dh „Load bei Inbetriebnahme“) festgelegt, die Addin arbeitet völlig in Ordnung, aber wenn wir den Wert für LoadBehavior
-0x10
(dh „Load on demand“) festgelegt, die Addin funktioniert nicht wie wir erwarten würden:
Aufgrund UAC (und das Wort läuft nicht erhöht), wird der Wert von LoadBehavior
in HKLM nicht 0x10
-0x9
verändert, sondern durch die Schaffung eines LoadBehavior
Schlüssel außer Kraft gesetzt wird (mit Wert 0x9
) in der HKCU-Struktur.
Leider haben wir festgestellt, dass diese HKCU überschriebene Wert nicht berücksichtigt genommen wird, es sei denn das Manifest Schlüssel zusammen mit LoadBehavior
) im HKCU Bienenstock vorhanden ist. Weitere Informationen zu diesem verwandten Thema: https://social.msdn.microsoft.com/Forums/vstudio/en-US/3776734b-333e-423b-9c08-7c7a441c3e94/load-behavior-and-word-addin?forum=vsto
Die ‚offensichtliche‘ Abhilfe für dieses Problem ist es, die Manifest
in HKCU für jeden Benutzer (sowie in HKLM) zu schreiben, zum Zeitpunkt der Installation OR wenn jeder Benutzer die Addin ausführen, um die erstes Mal. Es gibt jedoch einige gravierende Nachteile bei diesem Ansatz:
- Deinstallation des Addin erfordert alle Benutzer HKCU Werte Entfernen von Benutzern zu verhindern Laden Probleme auftreten (dies wird nicht empfohlen und stellt andere Fragen/Komplikationen wie die Notwendigkeit Active Setup zu verwenden - Remove registry keys under HKCU on a per machine installation).
- Benutzer, die diese Werte in ihrer (Roaming-) HKCU-Struktur haben, haben Probleme, wenn sie sich bei einer Maschine in derselben Domäne anmelden, in der unser Add-In nicht installiert ist.
Ist es ein Fehler, dass das Manifest nicht aus HKLM erhalten werden, wo die LoadBehavior
in geeigneter Weise in HKCU gesetzt? Ich denke, dieses Problem würde gelöst werden, wenn das LoadBehavior
in HKLM in HKCU außer Kraft gesetzt werden könnte, ohne dass der Manifest
Wert auch überschrieben werden muss.
Wer weiß, wie man dieses Problem lösen kann?
Danke dafür @dirk-vollmar. Nur um zu verdeutlichen, ist der Hauptgrund für die Verwendung von 'LoadOnDemand' nicht, dass wir ein langsames Add-In haben, sondern weil viele und viele Add-Ins geschäftskritisch sind. Diese konkurrieren um Ressourcen und oft "Konflikt" und Fehler, wenn sie gleichzeitig geladen werden. Leider müssen wir in einer Welt leben, in der wir die Add-Ins anderer Nutzer nicht ändern können. Wenn Sie so viele Kunden haben wie Sie, können Sie nicht alle dazu auffordern, ihre Auslastung zu verbessern. – RoKa