逐步解說:在 ClickOnce 安裝後將文件複製到使用者電腦

使用 ClickOnce 部署後動作,即可安裝文件層級的 Office 方案,然後將文件複製到使用者電腦。 在安裝之前,您必須修改應用程式資訊清單,並且重新簽署應用程式和部署資訊清單。

適用於: 本主題中的資訊適用於 Microsoft Office 2013 Preview 和 Microsoft Office 2010 的文件層級專案和應用程式層級專案。如需詳細資訊,請參閱 依 Office 應用程式和專案類型提供的功能

這個逐步解說將說明下列工作:

  • 建立要部署的 Office 方案。

  • 實作部署後動作,這個動作會將文件複製到使用者的桌面。

  • 修改 Office 方案的應用程式資訊清單以執行部署後動作。

  • 重新簽署應用程式和部署資訊清單。

注意事項注意事項

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置:您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定

必要條件

您需要下列元件才能完成此逐步解說:

-

包含 Microsoft Office Developer 工具的 Visual Studio 2012 版本。如需詳細資訊,請參閱[設定電腦以開發 Office 方案](https://msdn.microsoft.com/zh-tw/library/bb398242\(v=vs.110\))。
  • Excel 2013 預覽 或 Excel 2010。

  • 測試用電腦。

建立新專案

首先,先建立 Excel 活頁簿專案。

若要建立新的 Excel 專案

  • 建立 Excel 文件層級專案。 將專案命名為 ExcelWorkbook,然後儲存在 %USERPROFILE%\Documents\Visual Studio 2012\Projects 目錄中。 如需詳細資訊,請參閱HOW TO:在 Visual Studio 中建立 Office 專案

    Visual Studio 會在設計工具中開啟新的 Excel 活頁簿,並將 [ExcelWorkbook] 專案加入至 [方案總管]。

建立定義部署後動作的類別庫專案

您必須在另一個類別庫中定義部署後動作。 這個部署後動作會將文件複製到使用者電腦。

若要為部署後動作建立類別庫

  1. 指向 [檔案] 功能表上的 [加入],然後按一下 [新增專案]。

  2. 在 [加入新的專案] 對話方塊的 [已安裝的範本] 窗格中按一下 [Windows]。

  3. 按一下 [範本] 窗格中的 [類別庫]。

  4. 在 [名稱] 欄位中輸入 FileCopyPDA,然後按一下 [確定]。

  5. 在 [方案總管],按一下 [FileCopyPDA]。

  6. 在 [Project] 功能表上,按一下 [新增][參考]。

    [加入參考] 對話方塊隨即出現。

  7. 在 [.NET] 索引標籤,加入 Microsoft.VisualStudio.Tools.Applications.Runtime 和 Microsoft.VisualStudio.Tools.Applications.ServerDocument 的參考。

  8. 將下列 usingImports 陳述式加入至 Class1 程式碼檔頂端。

    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;
    
  9. 將這個類別重新命名為 FileCopyPDA,然後將下列程式碼加入至這個 FileCopyPDA 類別。 這段程式碼表示 FileCopyPDA 類別繼承自 IAddInPostDeploymentAction。

    Public Class FileCopyPDA
        Implements IAddInPostDeploymentAction
    
    public class FileCopyPDA : IAddInPostDeploymentAction
    
  10. 加入下列程式碼以實作 IAddInPostDeploymentAction.Execute 方法。 這個程式碼會執行下列工作:

    • 如果已安裝或更新方案,請將 Excel 活頁簿檔案複製到使用者的桌面。

    • 針對部署資訊清單,將 _AssemblyLocation 屬性從相對路徑變更為完整路徑。 這是藉由 AddCustomizationRemoveCustomization 方法來完成。

    • 如果尚未安裝方案,請將這個檔案刪除。

    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;
        }
    }
    

建置和發行方案

請使用 [發行精靈] 或 [專案設計工具] 的 [專案頁] 建置 Office 方案,並且發行至您的開發電腦。

若要發行 Excel 專案

  1. 以滑鼠右鍵按一下 [方案總管] 中的 [FileCopyPDA] 專案,然後按一下 [建置]。

  2. 以滑鼠右鍵按一下 [方案總管] 中的 [ExcelWorkbook] 專案,然後按一下 [建置]。

  3. 以滑鼠右鍵按一下 [方案總管] 中的 [ExcelWorkbook] 專案,然後按一下 [加入參考]。

  4. 在 [加入參考] 對話方塊中按一下 [專案] 索引標籤。

  5. 按一下 [FileCopyPDA],然後按一下 [確定]。

  6. 以滑鼠右鍵按一下 [方案總管] 中的 [ExcelWorkbook] 專案。

  7. 按一下 [專案] 功能表上的 [新增資料夾]。

  8. 輸入 Data 然後按 Enter 鍵。

  9. 以滑鼠右鍵按一下 [方案總管] 中的 [Data] 資料夾。

  10. 按一下 [專案] 功能表上的 [加入現有項目]。

  11. 在 [加入現有項目] 對話方塊中,瀏覽至 [ExcelWorkbook] 專案的輸出資料夾。

  12. 按一下 [ExcelWorkbook.xlsx],然後按一下 [加入]。

  13. 按一下 [方案總管] 中的 [ExcelWorkbook]。

    注意事項注意事項

    如果您稍後修改這個檔案,請記得加入最新版的檔案來更新檔案。

  14. 在 [屬性] 視窗中,將 [建置動作] 屬性變更為 [內容],並且將 [複製到輸出目錄] 屬性設定為 [有更新時才複製]。

  15. ExcelWorkbook 專案發行至 c:\publish 資料夾。 如需詳細資訊,請參閱HOW TO:使用 ClickOnce 發行 Office 方案

修改應用程式資訊清單

使用 Visual Studio 的 XML 編輯器修改應用程式資訊清單以執行「檔案複製」部署後動作。 應用程式資訊清單的內容類似於物料清單,它會列出箱子的整個內容;應用程式資訊清單會列出所有相依性及必備的組件。 Office 方案的應用程式資訊清單也會列出 Office 應用程式應該針對應用程式層級增益集和文件層級自訂載入的組件。

若要將安裝相依性加入至應用程式資訊清單

  1. 在檔案總管中開啟 c:\publish 目錄。

  2. 開啟 Application Files 資料夾,然後開啟 ExcelWorkbook_1_0_0_0 資料夾。

  3. 在文字編輯器中開啟 ExcelWorkbook.dll.manifest 檔。

  4. 將下列程式碼加入至 </vstav3:update> 項目之後。 如果是 <vstav3:entryPoint> 項目的類別屬性,請使用下列語法:<命名空間名稱>.<類別名稱>。 在這個範例中,命名空間和類別名稱都相同,因此產生的進入點名稱是 FileCopyPDA.FileCopyPDA。

    <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>
    

重新簽署資訊清單

下列程序可簽署應用程式資訊清單並更新部署資訊清單。 如此可確保不會將遭修改的檔案安裝在使用者電腦上。

若要重新簽署應用程式和部署資訊清單

  1. 將 %USERPROFILE%\Documents\Visual Studio 2012\Projects\ExcelWorkbook\ExcelWorkbook 方案目錄中的 ExcelWorkbook_TemporaryKey.pfx 憑證檔複製到 c:\publish\Application Files\ExcelWorkbook_1_0_0_0 目錄。

  2. 開啟 Visual Studio 命令提示字元。

  3. 切換到 c:\publish\Application Files\ExcelWorkbook_1_0_0_0 目錄。

  4. 使用下列命令簽署修改後的應用程式資訊清單:

    mage -sign ExcelWorkbook.dll.manifest -certfile ExcelWorkbook_TemporaryKey.pfx
    

    「ExcelWorkbook.dll.manifest 簽署成功」訊息隨即顯示。

  5. 切換到 c:\publish 目錄。

  6. 使用下列命令更新及簽署修部署資訊清單:

    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"
    

    「ExcelWorkbook.vsto 簽署成功」訊息隨即顯示。

  7. 將 ExcelWorkbook.vsto 檔案複製到 c:\publish\Application Files\ExcelWorkbook_1_0_0_0 目錄。

測試部署後動作

下列程序可確保更新後的資訊清單會安裝 Excel 活頁簿,並且將活頁簿複製到使用者的桌面。

若要測試部署後動作

  1. 將 c:\publish 目錄複製到測試用電腦。

  2. 執行 Setup.exe 程式;或是如果測試用電腦上已經安裝必要條件,請按兩下 [ExcelWorkbook.vsto] 部署資訊清單。

    [Microsoft Office 自訂安裝程式] 隨即顯示。

  3. 按一下 [安裝]。

    [Microsoft Office 自訂安裝程式] 對話方塊隨即顯示下列訊息:「已成功安裝 Microsoft Office 自訂。」Excel 活頁簿會複製到使用者的桌面。

  4. 從桌面開啟 ExcelWorkbook.xlsx 檔。

請參閱

工作

HOW TO:重新簽署應用程式和部署資訊清單

其他資源

部署 Office 方案