Exemplarische Vorgehensweise: Kopieren eines Dokuments auf den Computer des Endbenutzers nach einer ClickOnce-Installation
Mit einer ClickOnce-Aktion nach der Bereitstellung können Sie Office-Projektmappen auf Dokumentebene installieren und dann das Dokument auf den Endbenutzercomputer kopieren. Dazu müssen Sie das Anwendungsmanifest ändern und das Anwendungs- und das Bereitstellungsmanifest vor der Installation erneut signieren.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für Microsoft Office 2013 Preview und Microsoft Office 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:
Erstellen einer zu bereitstellenden Office-Projektmappe
Implementieren einer Aktion nach der Bereitstellung, mit der ein Dokument auf den Desktop des Endbenutzers kopiert wird
Ändern des Anwendungsmanifests der Office-Projektmappe, um die Aktion nach der Bereitstellung auszuführen
Erneutes Signieren der Anwendungs- und Bereitstellungsmanifeste
Hinweis
Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.
Erforderliche Komponenten
Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:
-
Eine Version von Visual Studio 2012, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](https://msdn.microsoft.com/de-de/library/bb398242\(v=vs.110\)).
Excel 2013-Vorschau oder Excel 2010.
Testcomputer
Erstellen eines neuen Projekts
Zuerst erstellen Sie ein Excel-Arbeitsmappenprojekt.
So erstellen Sie ein neues Excel-Projekt
Erstellen Sie ein Excel-Projekt auf Dokumentebene. Benennen Sie das Projekt mit ExcelWorkbook, und speichern Sie das Projekt im Verzeichnis %USERPROFILE%\Documents\Visual Studio 2012\Projects. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Office-Projekten in Visual Studio.
In Visual Studio wird die neue Excel-Arbeitsmappe im Designer geöffnet und dem Projektmappen-Explorer das Projekt ExcelWorkbook hinzugefügt.
Erstellen eines Klassenbibliotheksprojekts, mit dem die Aktion nach der Bereitstellung definiert wird
Sie müssen die Aktion nach der Bereitstellung in einer separaten Klassenbibliothek definieren. Mit der Aktion nach der Bereitstellung wird das Dokument auf den Endbenutzercomputer kopiert.
So erstellen Sie eine Klassenbibliothek für die Aktion nach der Bereitstellung
Zeigen Sie im Menü Datei auf Hinzufügen, und klicken Sie dann auf Neues Projekt.
Klicken Sie im Dialogfeld Neues Projekt hinzufügen im Bereich Installierte Vorlagen auf Fenster.
Klicken Sie im Bereich Vorlagen auf Klassenbibliothek.
Geben Sie im Feld Name die Zeichenfolge FileCopyPDA ein, und klicken Sie dann auf OK.
In Projektmappen-Explorer klicken Sie auf FileCopyPDA.
Klicken Sie im Menü auf ProjektHinzufügenVerweis.
Das Dialogfeld Verweis hinzufügen wird angezeigt.
Klicken Sie auf der Registerkarte .NET fügen Sie Verweise auf "Microsoft.VisualStudio.Tools.Applications.Runtime" und "Microsoft.VisualStudio.Tools.Applications.ServerDocument" hinzu.
Fügen Sie am Anfang der in der Class1-Codedatei die folgenden using- oder Imports-Anweisungen hinzu.
Imports Microsoft.VisualStudio.Tools.Applications.Deployment Imports Microsoft.VisualStudio.Tools.Applications
using Microsoft.VisualStudio.Tools.Applications.Deployment; using Microsoft.VisualStudio.Tools.Applications; using System.IO;
Benennen Sie die Klasse in FileCopyPDA um, und fügen Sie dann der FileCopyPDA-Klasse den folgenden Code hinzu. Dieser Code gibt an, dass die FileCopyPDA-Klasse von IAddInPostDeploymentAction erbt.
Public Class FileCopyPDA Implements IAddInPostDeploymentAction
public class FileCopyPDA : IAddInPostDeploymentAction
Fügen Sie folgenden Code hinzu, um die IAddInPostDeploymentAction.Execute-Methode zu implementieren. Mit diesem Code werden die folgenden Aufgaben ausgeführt:
Kopieren der Excel-Arbeitsmappendatei auf den Benutzerdesktop, wenn die Projektmappe installiert oder aktualisiert wird.
Ändern der _AssemblyLocation-Eigenschaft von einem relativen Pfad in einen vollqualifizierten Pfad für das Bereitstellungsmanifest. Dies wird mithilfe der AddCustomization-Methode und der RemoveCustomization-Methode erreicht.
Löschen der Datei, wenn die Projektmappe deinstalliert wird.
Sub Execute(ByVal args As AddInPostDeploymentActionArgs) Implements IAddInPostDeploymentAction.Execute Dim dataDirectory As String = "Data\ExcelWorkbook.xlsx" Dim file As String = "ExcelWorkbook.xlsx" Dim sourcePath As String = args.AddInPath Dim deploymentManifestUri As Uri = args.ManifestLocation Dim destPath As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) Dim sourceFile As String = System.IO.Path.Combine(sourcePath, dataDirectory) Dim destFile As String = System.IO.Path.Combine(destPath, file) Select Case args.InstallationStatus Case AddInInstallationStatus.InitialInstall, AddInInstallationStatus.Update System.IO.File.Copy(sourceFile, destFile) ServerDocument.RemoveCustomization(destFile) ServerDocument.AddCustomization(destFile, deploymentManifestUri) Exit Select Case AddInInstallationStatus.Uninstall If System.IO.File.Exists(destFile) Then System.IO.File.Delete(destFile) End If Exit Select End Select End Sub
public void Execute(AddInPostDeploymentActionArgs args) { string dataDirectory = @"Data\ExcelWorkbook.xlsx"; string file = @"ExcelWorkbook.xlsx"; string sourcePath = args.AddInPath; Uri deploymentManifestUri = args.ManifestLocation; string destPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); string sourceFile = System.IO.Path.Combine(sourcePath, dataDirectory); string destFile = System.IO.Path.Combine(destPath, file); switch (args.InstallationStatus) { case AddInInstallationStatus.InitialInstall: case AddInInstallationStatus.Update: File.Copy(sourceFile, destFile); ServerDocument.RemoveCustomization(destFile); ServerDocument.AddCustomization(destFile, deploymentManifestUri); break; case AddInInstallationStatus.Uninstall: if (File.Exists(destFile)) { File.Delete(destFile); } break; } }
Erstellen und Veröffentlichen der Projektmappe
Erstellen und veröffentlichen Sie die Office-Projektmappen mit dem Webpublishing-Assistenten oder auf der Seite Projekt auf dem Entwicklungscomputer.
So veröffentlichen Sie das Excel-Projekt
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt FileCopyPDA, und klicken Sie anschließend auf Erstellen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ExcelWorkbook, und klicken Sie anschließend auf Erstellen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ExcelWorkbook, und klicken Sie anschließend auf Verweis hinzufügen.
Klicken Sie im Dialogfeld Verweis hinzufügen auf die Registerkarte Projekte.
Klicken Sie auf FileCopyPDA und dann auf OK.
Klicken Sie im Projektmappen-Explorer auf das Projekt ExcelWorkbook.
Klicken Sie im Menü Projekt auf Neuer Ordner.
Geben Sie Data ein, und drücken Sie die EINGABETASTE.
Klicken Sie im Projektmappen-Explorer auf den Ordner Daten.
Klicken Sie im Menü Projekt auf Vorhandenes Element hinzufügen.
Wechseln Sie im Dialogfeld Vorhandenes Element hinzufügen zum Ausgabeverzeichnis für das Projekt ExcelWorkbook.
Klicken Sie auf ExcelWorkbook.xlsx und dann auf Hinzufügen.
Klicken Sie im Projektmappen-Explorer auf ExcelWorkbook.xlsx.
Hinweis
Wenn Sie diese Datei später ändern, müssen Sie die Datei aktualisieren, indem Sie die aktuelle Version der Datei hinzufügen.
Ändern Sie im Eigenschaftenfenster die Eigenschaft Buildvorgang in Inhalt, und die Eigenschaft In Ausgabeverzeichnis kopieren in Kopieren, wenn neuer.
Veröffentlichen Sie das Projekt ExcelWorkbook im Ordner c:\publish. Weitere Informationen finden Sie unter Gewusst wie: Veröffentlichen einer Office-Projektmappe mit ClickOnce.
Ändern des Anwendungsmanifests
Ändern Sie im XML-Editor von Visual Studio das Anwendungsmanifest so, dass die Aktion nach der Bereitstellung File Copy ausgeführt wird. Der Inhalt eines Anwendungsmanifests ähnelt in etwa einer Rechnung von Materialien, in der der gesamte Inhalt eines Felds aufgeführt ist. In einem Anwendungsmanifest sind alle abhängigen und erforderlichen Assemblys aufgeführt. Im Anwendungsmanifest für eine Office-Lösung sind auch die Assemblys aufgeführt, die von einer Office-Anwendung für Add-Ins auf Anwendungsebene und Anpassungen auf Dokumentebene geladen werden sollen.
So fügen Sie dem Anwendungsmanifest die Installationsabhängigkeiten hinzu
Öffnen Sie das c:\publish Verzeichnis durch Datei-Explorer.
Öffnen Sie den Ordner Anwendungsdateien und dann den Ordner ExcelWorkbook_1_0_0_0.
Öffnen Sie die Datei ExcelWorkbook.dll.manifest in einem Texteditor.
Fügen Sie nach dem </vstav3:update>-Element den folgenden Code ein: Verwenden Sie für das Klassenattribut des <vstav3:entryPoint>-Elements die folgende Syntax: NamespaceName.ClassName. In diesem Beispiel sind der Namespace und die Klassennamen gleich, sodass der Name des resultierenden Einstiegspunkts FileCopyPDA.FileCopyPDA lautet.
<vstav3:postActions> <vstav3:postAction> <vstav3:entryPoint class="FileCopyPDA.FileCopyPDA"> <assemblyIdentity name="FileCopyPDA" version="1.0.0.0" language="neutral" processorArchitecture="msil" /> </vstav3:entryPoint> <vstav3:postActionData> </vstav3:postActionData> </vstav3:postAction> </vstav3:postActions>
Erneutes Signieren des Manifeste
Mit der folgenden Prozedur wird das Anwendungsmanifest signiert und das Bereitstellungsmanifest aktualisiert. Dadurch wird sichergestellt, dass manipulierte Dateien nicht auf Endbenutzercomputern installiert werden.
So signieren Sie die Anwendungs- und Bereitstellungsmanifeste erneut
Kopieren Sie die Zertifikatdatei ExcelWorkbook_TemporaryKey.pfx aus dem Projektmappenverzeichnis %USERPROFILE%\Documents\Visual Studio 2012\Projects\ExcelWorkbook\ExcelWorkbook in das Verzeichnis c:\publish\Application Files\ExcelWorkbook_1_0_0_0.
Öffnen Sie die Eingabeaufforderung von Visual Studio.
Wechseln Sie zum Verzeichnis c:\publish\Application Files\ExcelWorkbook_1_0_0_0.
Signieren Sie das geänderte Anwendungsmanifest mit dem folgenden Befehl:
mage -sign ExcelWorkbook.dll.manifest -certfile ExcelWorkbook_TemporaryKey.pfx
Die Meldung "ExcelWorkbook.dll.manifest erfolgreich signiert" wird angezeigt.
Wechseln Sie zum Verzeichnis c:\publish.
Aktualisieren und signieren Sie das Bereitstellungsmanifest mit dem folgenden Befehl:
mage -update ExcelWorkbook.vsto -appmanifest "Application Files\Ex celWorkbook_1_0_0_0\ExcelWorkbook.dll.manifest" -certfile "Application Files\ExcelWorkbook_1_0_0_0\ExcelWorkbook_TemporaryKey.pfx"
Die Meldung "ExcelWorkbook.vsto erfolgreich signiert" wird angezeigt.
Kopieren Sie die Datei ExcelWorkbook.vsto in das Verzeichnis c:\publish\Application Files\ExcelWorkbook_1_0_0_0.
Testen der Aktion nach der Bereitstellung
Mit der folgenden Prozedur wird sichergestellt, dass das aktualisierte Manifest die Excel-Arbeitsmappe installiert und die Arbeitsmappe auf den Desktop des Endbenutzers kopiert.
So testen Sie die Aktion nach der Bereitstellung
Kopieren Sie das Verzeichnis c:\publish auf einen Testcomputer.
Führen Sie das Programm Setup.exe aus, oder, wenn die erforderlichen Komponenten bereits auf dem Testcomputer installiert sind, doppelklicken Sie auf das Bereitstellungsmanifest ExcelWorkbook.vsto.
Der Microsoft Office-Anpassungs-Installer wird angezeigt.
Klicken Sie auf Installieren.
Im Dialogfeld Microsoft Office-Anpassungs-Installer wird die folgende Meldung angezeigt: "Die Microsoft Office-Anpassung wurde erfolgreich installiert". Die Excel-Arbeitsmappe wird auf den Desktop des Endbenutzers kopiert.
Öffnen Sie auf dem Desktop die Datei ExcelWorkbook.xlsx.
Siehe auch
Aufgaben
Gewusst wie: Erneutes Signieren von Anwendungs- und Bereitstellungsmanifesten