2010-12-22 4 views
1

Wenn ich mein VSTO-basiertes PowerPoint-Plugin installiere, wird es immer im Abschnitt "deaktiviert" angezeigt und jedes Mal, wenn ich PowerPoint öffne, muss ich es manuell aktivieren.PowerPoint VSTO-Add-In standardmäßig aktivieren

Wie programmiere ich dieses Verhalten programmatisch so, dass das Plugin standardmäßig immer aktiviert ist.

Antwort

1

Wenn Sie ein Büro (VSTO) Addin (in Office) aktiviert werden, ändert sich der Registrierungsschlüssel:

HKLM\SOFTWARE\Microsoft\Office\PowerPoint\Addins\YourAssemblyName "LoadBehavior" 

Der LoadBehavior Wert muss auf 3 Last eingestellt werden (dh aktiviert) (2 für Behinderte ist

)

Office-Programme normalerweise nur diese LoadBehavior ändern zurück auf 2 eingestellt wird, wenn etwas nicht in Ordnung (zB Ausnahme in der Startup Ereigniscode geht, nicht gelungen, eine Montage usw.) So müssen Sie herausfinden, um herauszufinden, was passiert, (debuggen Sie Ihr Startup oder führen Sie eine Protokollierung durch)

In jedem Fall, um dies programmatisch zu setzen, müssen Sie Code schreiben, um diese Registrierungseinstellung zu ändern.

Ich mache es in einem Installer, NSIS, zum Beispiel:

StrCpy $0 "SOFTWARE\Microsoft\Office\PowerPoint\Addins\YourAssemblyName" 

WriteRegStr HKLM $0 "Description" "Product Name" 
WriteRegStr HKLM $0 "FriendlyName" "Product Name" 
WriteRegDWORD HKLM $0 "LoadBehavior" 3 
WriteRegStr HKLM $0 "Manifest" "$INSTDIR\YourAssemblyName.vsto|vstolocal" 
+0

es ein Problem in dem Startcode war vor und es abgestürzt ist. Aber auch nach mehreren Iterationen (mit scheinbar funktionierendem Code) wird es nicht automatisch geladen. könnte das mit dem ersten Crash zusammenhängen? – JewelThief

+0

schaute auf die Registrierungseinstellungen, es scheint, dass ändert sich von 3 zu 2, sobald ich Powerpoint-Instanz starte. Dann, wenn ich es manuell aktiviere, funktioniert pluing gut. Was könnten mögliche Probleme hier sein? Alles, was ich tue, ist ein Verzeichnis und eine Datei im Startup-Code – JewelThief

+0

mit try catch-Block erstellen, ich könnte etwas Funkiness in meinem Code finden und ich mein Add-in wird standardmäßig geladen. cool. – JewelThief