5 Stimmen

Muss ich meine Kunden zwingen, die Office Xxxx Primary Interop Assemblies zu installieren?

Wenn Sie versuchen, auf die Office-COM-Objekte zu verweisen (wie Sie es in anderen Entwicklungsumgebungen tun würden), scheint es, dass Visual Studio es falsch versteht. und es funktioniert einfach nicht .

Sie müssen also die konvertierte Typbibliothek verwenden, die Microsoft von Hand konvertiert und für herunterladen et herunterladen et herunterladen .

Damit meine Anwendung ausgeführt werden kann, benötigt sie den Office Interop-Code, der in einer Assembly enthalten ist.

Jetzt möchte ich meine Kunden nicht zwingen, die primären Interop-Assemblys von Office 2007, Office 2003 oder Office XP zu installieren, sondern ich möchte eine xcopy-Bereitstellung.

Wenn es mir gelingt, eine Kopie der Interop-Assemblies von Microsoft zu erhalten, kann ich sie einfach in die Ordner Bin/Debug und Bin/Release kopieren?

Wenn ich die Office 2007 Interop-Assemblies einfüge, funktioniert es dann, wenn der Kunde Office 95 installiert hat, oder muss ich alle Versionen der Office Interop dlls einfügen, die Microsoft jemals veröffentlicht hat?

4voto

Colby Africa Punkte 1346

Dies ist eine häufige Frage mit einer ziemlich komplizierten Antwort. Mary Lee von MSFT ist eine hervorragende Quelle für Informationen zu diesem Thema:

http://blogs.msdn.com/vsto/archive/tags/Deployment/default.aspx

Die Verwendung von ClickOnce zur Bereitstellung kommt einer XCopy-Installation einer auf VSTO basierenden Anwendung am nächsten.

Lesen Sie auch diesen Beitrag:

http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/1666d2b0-a4d0-41e8-ad86-5eab3542de1e/

Schließlich hat Misha einen tollen Blog:

http://blogs.msdn.com/mshneer/archive/2006/01/05/deployment-articles.aspx

Die PIAs sind spezifisch für die Version von Office, auf die Sie abzielen, d. h. die PIAs für 2003 sind für 2003 erforderlich und die PIAs für 2007 sind für 2007 erforderlich. Die Automatisierung von Office 95 über verwalteten Code ist etwas, das ich noch nicht gemacht habe, aber ich kann mir vorstellen, dass Sie direkt auf die Typbibliotheken verweisen, so dass ein RCW für Sie generiert wird und nichts mit den PIAs zu tun hat.

HTH

Colby Afrika (MSFT)

2voto

Gary McGill Punkte 25122

Aus meiner eigenen Erfahrung:

Wenn Sie auf Office 2003 und höher abzielen wollen, verwenden Sie die Office 2003 PIAs und beschränken sich auf die Office 2003 API. Der Code würde unter Office 2003 laufen oder später . Sie können zwar immer noch Office 2007-Funktionen mit Reflection aufrufen, aber das ist nicht angenehm.

Ich kann mir vorstellen, dass es ähnlich ist, wenn Ihre Basisversion Office 2000 ist - obwohl ich es nicht ausprobiert habe, und ich glaube, die früheste Version, für die Microsoft selbst PIAs anbietet, ist Office 2002 (XP).

Sie können Ihre eigenen Interop-Assemblies für 2000 erstellen, und ich habe keinen Grund anzunehmen, dass Sie das nicht auch für '95 tun können, obwohl Sie der erste sind, den ich je nach '95-Unterstützung fragen sehe! Wenn Sie Ihre eigenen Interop-Assemblies erstellen, müssen Sie sie natürlich zusammen mit Ihrer Anwendung bereitstellen.

In jedem Fall sollten Sie die höchste Office-Version, mit der Sie als Basisversion auskommen, so dass Sie so viele Funktionen wie möglich unterstützen können, ohne auf Reflection zurückzugreifen. Sie sollten Ihren Code auf einem Rechner entwickeln, der über sólo diese Version von Office installiert.

In meinem Fall entwickle ich für Office 2003 und weiß, dass meine Benutzer auch 2003 haben. Also bitte ich sie, sicherzustellen, dass sie die Funktion ".NET Programmability Support" aktiviert haben (was Sie über Office 2003 Setup über Software tun können, wenn Sie die Option Ändern wählen). Mit dieser Option werden die PIAs grundsätzlich in der GAC installiert. Für die Benutzer, die dies nicht tun können, erkennt mein Setup-Programm das Fehlen der PIAs und installiert sie vor der Installation meiner Anwendung (wie es für das .NET-Framework geschieht).

XCOPY-Einsatz? Ja, das würde ich auch gerne - aber vergessen Sie es. Wenn Ihr Add-In im Hochsicherheitsmodus arbeiten soll, brauchen Sie eine vom Code signierte COM-"Zwischenschicht" zwischen Ihrem Code und Office, und die muss registriert werden. Ich glaube, VSTO bietet ein eigenes Shim an, wenn Sie sich für diesen Weg entscheiden (ich habe es nicht getan, da ich in der Lage sein musste, Office von Grund auf zu "steuern", anstatt mich darauf zu verlassen, dass der Benutzer die Anwendung startet).

Die Bereitstellung - und der Umgang mit den Installations- und Sicherheitsproblemen - ist einer der schwierigsten Teile der Entwicklung von Office-Add-Ins mit .NET, und es ist ein echter Knaller, dass er genau am Ende kommt, wenn Sie dachten, Sie wären fertig.

Mon stark raten wir Ihnen, sich Tage und Wochen des Ärgers zu ersparen und sich Add-in Express . Ich bin selbst erst kürzlich darauf gestoßen und ärgere mich seitdem, weil ich damit so viel Zeit hätte sparen können. Es hat mehrere Vorteile, die meiner Meinung nach für Sie nützlich sein könnten:

  1. Es ermöglicht Ihnen, ein einziges Add-In für Office 2000 bis Office 2007 (leider nicht '95) zu erstellen, unabhängig davon, welche Version Sie auf Ihrem Entwicklungs-PC haben.
  2. Es erstellt ein Installationsprogramm für Sie (das sogar unter Vista funktioniert!), das an sich schon den Preis wert ist.
  3. Es wird mit einem eigenen COM-Shim geliefert und ist so weit integriert, dass Sie sich nicht darum kümmern müssen.
  4. Damit können Sie ein einzelnes Add-In erstellen, das in den Office-Versionen bis 2003 eine Menü-/Symbolleistenschnittstelle, in 2007 jedoch eine Multifunktionsleistenschnittstelle hat.

Bitte beachten Sie, dass ich in keiner Weise mit Add-in Express verbunden bin (außer als kürzlich erfolgter Kunde), aber ich habe auch meine Projekte noch nicht auf die Verwendung von Add-in Express umgestellt. Die ersten Tests, die ich durchgeführt habe, lassen mich glauben, dass es ziemlich gut ist - und definitiv der richtige Weg für kleine bis mittlere Projekte.

0voto

Wenn es mir gelingt, eine Kopie der Interop-Assemblies von Microsoft zu erhalten, kann ich sie einfach in die Ordner Bin/Debug und Bin/Release kopieren?

Bei mir hat es funktioniert. Als ich das Programm kompilierte, ließ ich es auf die Interop-DLLs (PIA) in der Bin verweisen und stellte es dann auf diese Weise für den Kunden bereit.

Wenn ich die Office 2007 Interop-Assemblies einfüge, funktioniert es dann, wenn der Kunde Office 95 installiert hat?

Nein, Sie müssen die Interop-DLLs für die jeweilige Word-Version haben. Ich nehme an, es könnte möglich sein, Ihren Code so zu schreiben, dass er die Version von Word, die auf diesem Rechner läuft, überprüft und zur Laufzeit die richtige Interop-Dll auswählt, aber Sie müssen sie alle einschließen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X