연습: ClickOnce 설치 후 최종 사용자 컴퓨터에 문서 복사
업데이트: 2010년 9월
ClickOnce 배포 후 작업을 사용하면 문서 수준 Office 솔루션을 설치한 후 문서를 최종 사용자 컴퓨터에 복사할 수 있습니다. 이를 위해서는 설치 작업을 시작하기 전에 응용 프로그램 매니페스트를 수정한 후 응용 프로그램 및 배포 매니페스트에 다시 서명해야 합니다.
적용 대상: 이 항목의 정보는 Microsoft Office 2010 및 2007 Microsoft Office system의 문서 수준 프로젝트 및 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.
이 연습에서는 다음 작업을 수행합니다.
배포할 Office 솔루션을 만듭니다.
문서를 최종 사용자의 데스크톱에 복사하는 배포 후 작업을 구현합니다.
배포 후 작업을 실행하도록 Office 솔루션의 응용 프로그램 매니페스트를 수정합니다.
응용 프로그램 및 배포 매니페스트에 다시 서명합니다.
참고
다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
-
Microsoft Office 개발자 도구를 포함하는 Visual Studio 2010 버전입니다. 자세한 내용은 [Office 솔루션을 개발할 수 있도록 컴퓨터 구성](bb398242\(v=vs.100\).md)을 참조하십시오.
Excel 2007 또는 Excel 2010
테스트 컴퓨터
새 프로젝트 만들기
먼저 Excel 통합 문서 프로젝트를 만듭니다.
새 Excel 프로젝트를 만들려면
Excel 문서 수준 프로젝트를 만듭니다. 프로젝트에 ExcelWorkbook이라는 이름을 지정한 후 %USERPROFILE%\Documents\Visual Studio 2010\Projects 디렉터리에 프로젝트를 저장합니다. 자세한 내용은 방법: Visual Studio에서 Office 프로젝트 만들기를 참조하십시오.
Visual Studio의 디자이너에서 새 Excel 통합 문서가 열리고 ExcelWorkbook 프로젝트가 솔루션 탐색기에 추가됩니다.
배포 후 작업을 정의하는 클래스 라이브러리 프로젝트 만들기
배포 후 작업은 별도의 클래스 라이브러리에 정의해야 합니다. 배포 후 작업은 문서를 최종 사용자의 컴퓨터에 복사합니다.
배포 후 작업에 대한 클래스 라이브러리를 만들려면
파일 메뉴에서 추가를 가리킨 다음 새 프로젝트를 클릭합니다.
새 프로젝트 추가 대화 상자의 설치된 템플릿 창에서 Windows를 클릭합니다.
템플릿 창에서 클래스 라이브러리를 클릭합니다.
이름 필드에 FileCopyPDA를 입력한 다음 확인을 클릭합니다.
솔루션 탐색기에서 FileCopyPDA를 클릭합니다.
프로젝트 메뉴에서참조 추가를 클릭합니다.
참조 추가 대화 상자의 .NET 탭에서 다음 참조를 추가합니다.
Microsoft.VisualStudio.Tools.Applications.Runtime.v10.0 및 Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0에 대한 참조(.NET Framework 3.5를 대상으로 하는 Excel 프로젝트의 경우)
Microsoft.VisualStudio.Tools.Applications.Runtime.v10.0 및 Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0에 대한 참조(.NET Framework 4을 대상으로 하는 Excel 프로젝트의 경우)
Class1 코드 파일의 맨 위에 다음 using 또는 Imports문을 추가합니다.
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;
클래스의 이름을 FileCopyPDA로 바꾼 후 다음 코드를 FileCopyPDA 클래스에 추가합니다. 이 코드는 FileCopyPDA 클래스가 IAddInPostDeploymentAction에서 상속됨을 나타냅니다.
Public Class FileCopyPDA Implements IAddInPostDeploymentAction
public class FileCopyPDA : IAddInPostDeploymentAction
다음 코드를 추가하여 IAddInPostDeploymentAction.Execute 메서드를 구현합니다. 이 코드는 다음 작업을 수행합니다.
솔루션이 설치되었거나 업데이트된 경우에는 Excel 통합 문서 파일을 사용자의 데스크톱에 복사합니다.
_AssemblyLocation 속성을 배포 매니페스트의 상대 경로에서 정규화된 경로로 변경합니다. 이 작업은 AddCustomization 및 RemoveCustomization 메서드를 사용하여 수행합니다.
솔루션이 제거된 경우 파일을 삭제합니다.
참고
배포 후 작업은 .NET Framework 3.5 제거 단계 중 실행됩니다.
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 프로젝트를 게시하려면
솔루션 탐색기에서 FileCopyPDA 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 빌드를 클릭합니다.
솔루션 탐색기에서 ExcelWorkbook 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 빌드를 클릭합니다.
솔루션 탐색기에서 ExcelWorkbook 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 참조 추가를 클릭합니다.
참조 추가 대화 상자에서 프로젝트 탭을 클릭합니다.
FileCopyPDA를 클릭하고 확인을 클릭합니다.
솔루션 탐색기에서 ExcelWorkbook 프로젝트를 클릭합니다.
프로젝트 메뉴에서 새 폴더를 클릭합니다.
Data를 입력하고 Enter 키를 누릅니다.
솔루션 탐색기에서 Data 폴더를 클릭합니다.
프로젝트 메뉴에서 기존 항목 추가를 클릭합니다.
기존 항목 추가 대화 상자에서 ExcelWorkbook 프로젝트의 출력 디렉터리를 찾습니다.
ExcelWorkbook.xlsx를 클릭한 다음 추가를 클릭합니다.
솔루션 탐색기에서 ExcelWorkbook.xlsx를 클릭합니다.
참고
이 파일을 나중에 수정하는 경우 최신 버전의 파일을 추가하여 파일을 업데이트해야 합니다.
속성 창에서 빌드 작업 속성을 내용으로 변경하고 출력 디렉터리로 복사 속성을 변경된 내용만 복사로 변경합니다.
ExcelWorkbook 프로젝트를 c:\publish 폴더에 게시합니다. 자세한 내용은 방법: ClickOnce를 사용하여 Office 솔루션 배포를 참조하십시오.
응용 프로그램 매니페스트 수정
Visual Studio의 XML 편집기를 사용하여 파일 복사 배포 후 작업을 실행하도록 응용 프로그램 매니페스트를 수정합니다. 응용 프로그램 매니페스트의 내용은 상자의 전체 내용물을 나열하는 제품 구성 정보와 유사합니다. 응용 프로그램 매니페스트에는 모든 종속 어셈블리 및 필수 구성 요소 어셈블리가 나열됩니다. Office 솔루션용 응용 프로그램 매니페스트에는 응용 프로그램 수준 추가 기능 및 문서 수준 사용자 지정을 위해 Office 응용 프로그램에서 로드되어야 하는 어셈블리도 나열됩니다.
설치 종속성을 응용 프로그램 매니페스트에 추가하려면
Windows 탐색기에서 c:\publish 디렉터리를 엽니다.
Application Files 폴더를 열고 ExcelWorkbook_1_0_0_0 폴더를 엽니다.
텍스트 편집기에서 ExcelWorkbook.dll.manifest 파일을 엽니다.
</vstav3:update> 요소 뒤에 다음 코드를 추가합니다. <vstav3:entryPoint> 요소의 클래스 특성으로 NamespaceName.ClassName 구문을 사용합니다. 이 예제에서는 네임스페이스 및 클래스 이름이 같기 때문에 결과 진입점 이름은 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>
매니페스트 다시 서명
다음 절차에서 응용 프로그램 매니페스트에 서명하고 배포 매니페스트를 업데이트합니다. 이렇게 하면 변조된 파일이 최종 사용자 컴퓨터에 설치되지 않습니다.
응용 프로그램 및 배포 매니페스트에 다시 서명하려면
ExcelWorkbook_TemporaryKey.pfx 인증서 파일을 %USERPROFILE%\Documents\Visual Studio 2010\Projects\ExcelWorkbook\ExcelWorkbook 솔루션 디렉터리에서 c:\publish\Application Files\ExcelWorkbook_1_0_0_0 디렉터리로 복사합니다.
Visual Studio 명령 프롬프트를 엽니다.
c:\publish\Application Files\ExcelWorkbook_1_0_0_0 디렉터리로 변경합니다.
다음 명령을 실행하여 수정된 응용 프로그램 매니페스트에 서명합니다.
mage -sign ExcelWorkbook.dll.manifest -certfile ExcelWorkbook_TemporaryKey.pfx
"ExcelWorkbook.dll.manifest에 서명했습니다"라는 메시지가 나타납니다.
c:\publish 디렉터리로 변경합니다.
다음 명령을 실행하여 배포 매니페스트를 업데이트하고 서명합니다.
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에 서명했습니다."라는 메시지가 나타납니다.
ExcelWorkbook.vsto 파일을 c:\publish\Application Files\ExcelWorkbook_1_0_0_0 디렉터리에 복사합니다.
배포 후 작업 테스트
다음 절차에서는 업데이트된 매니페스트가 Excel 통합 문서를 설치하고 최종 사용자의 데스크톱에 복사했는지 확인하는 방법에 대해 설명합니다.
배포 후 작업을 테스트하려면
c:\publish 디렉터리를 테스트 컴퓨터에 복사합니다.
Setup.exe 프로그램을 실행하거나, 필수 구성 요소가 테스트 컴퓨터에 이미 설치되었으면 ExcelWorkbook.vsto 배포 매니페스트를 두 번 클릭합니다.
Microsoft Office 사용자 지정 설치 관리자가 나타납니다.
설치를 클릭합니다.
Microsoft Office 사용자 지정 설치 관리자 대화 상자에 "Microsoft Office 사용자 지정을 설치했습니다."라는 메시지가 표시됩니다. Excel 통합 문서는 최종 사용자의 데스크톱에 복사합니다.
데스크톱에서 ExcelWorkbook.xlsx 파일을 엽니다.
참고 항목
작업
개념
기타 리소스
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2010년 9월 |
%USERPROFILE%\Documents\Visual Studio 10\Projects를 %USERPROFILE%\Documents\Visual Studio 2010\Projects로 변경했습니다. |
콘텐츠 버그 수정 |