연습: 개인정보처리방침 프롬프트가 포함된 사용자 지정 부트스트래퍼 만들기

신규 파일 버전 및 어셈블리 버전이 있는 어셈블리가 제공되면 자동으로 업데이트되도록 ClickOnce 애플리케이션을 구성할 수 있습니다. 고객이 이 작업에 동의할 수 있도록 개인 정보 보호 프롬프트를 표시할 수 있습니다. 고객은 애플리케이션에 자동 업데이트 권한을 부여할지 여부를 선택할 수 있습니다. 애플리케이션에서 자동 업데이트를 허용하지 않는다면 신규 버전이 설치되지 않습니다.

참고 항목

이 문서의 일부 Visual Studio 사용자 인터페이스 요소에 대한 다른 이름 또는 위치가 컴퓨터에 표시될 수 있습니다. 다른 버전의 Visual Studio 또는 다른 환경 설정을 사용 중일 수 있습니다. 자세한 내용은 IDE 개인 설정을 참조하세요.

개인 정보 보호 프롬프트를 표시할 수 있도록, 독자에게 애플리케이션 자동 업데이트 동의 여부를 묻는 애플리케이션을 만듭니다.

  1. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.

  2. 프로젝트 대화 상자에서 Windows를 클릭한 다음 WindowsFormsApplication을 클릭합니다.

  3. 이름ConsentDialog를 입력하고 확인을 클릭합니다.

  4. 디자이너에서 폼을 클릭합니다.

  5. 속성 창에서 Text 속성을 업데이트 동의 대화 상자로 변경합니다.

  6. 도구 상자에서 모든 Windows Forms을 확장하고 레이블 컨트롤을 폼으로 끌어다 놓습니다.

  7. 디자이너에서 레이블 컨트롤을 클릭합니다.

  8. 속성 창에서 모양Text 속성을 다음으로 변경합니다.

    설치할 애플리케이션이 웹에서 최신 업데이트를 확인합니다. "동의"를 클릭하면 인터넷에서 업데이트를 자동으로 확인하고 설치할 수 있는 권한이 애플리케이션에 부여됩니다.

  9. 도구 상자에서 확인란 컨트롤을 폼의 가운데로 끌어다 놓습니다.

  10. 속성 창에서 레이아웃 창의 Text 속성을 I Agree로 변경합니다.

  11. 도구 상자에서 단추 컨트롤을 폼의 왼쪽 아래로 끌어다 놓습니다.

  12. 속성 창에서 레이아웃 창의 Text 속성을 Proceed로 변경합니다.

  13. 속성 창에서 레이아웃 창의 (Name) 속성을 ProceedButton으로 변경합니다.

  14. 도구 상자에서 단추 컨트롤을 폼의 오른쪽 아래로 끌어다 놓습니다.

  15. 속성 창에서 레이아웃 창의 Text 속성을 Cancel로 변경합니다.

  16. 속성 창에서 레이아웃 창의 (Name) 속성을 CancelButton으로 변경합니다.

  17. 디자이너에서 동의 확인란을 두 번 클릭하여 CheckedChanged 이벤트 처리기를 생성합니다.

  18. Form1 코드 파일에서 CheckedChanged 이벤트 처리기에 적용되는 다음 코드를 추가합니다.

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        ProceedButton.Enabled = !ProceedButton.Enabled;
    }
    
  19. 클래스 생성자를 업데이트하여 계속 단추를 기본적으로 사용하지 않도록 설정합니다.

    public Form1()
    {
        InitializeComponent();
        ProceedButton.Enabled = false;
    }
    
  20. Form1 코드 파일에서 부울 변수에 적용되는 다음 코드를 추가하여 최종 사용자가 온라인 업데이트에 동의했는지를 추적합니다.

    public bool accepted = false;
    
  21. 디자이너에서 계속 단추를 두 번 클릭하여 Click 이벤트 처리기를 생성합니다.

  22. Form1 코드 파일에서 다음 코드를 계속 버튼의 Click 이벤트 처리기에 추가합니다.

    private void ProceedButton_Click(object sender, EventArgs e)
    {
        if (ProceedButton.Enabled)
        {
            accepted = true;
            this.Close();
        }
    }
    
  23. 디자이너에서 취소 단추를 두 번 클릭하여 Click 이벤트 처리기를 생성합니다.

  24. Form1 코드 파일에서 취소 버튼의 Click 이벤트 처리기에 적용되는 다음 코드를 추가합니다.

    private void CancelButton_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    
  25. 최종 사용자가 온라인 업데이트에 동의하지 않는 경우 오류를 반환하도록 애플리케이션을 업데이트합니다.

    Visual Basic 개발자에만 적용:

    1. 솔루션 탐색기에서 ConsentDialog를 클릭합니다.

    2. 프로젝트 메뉴에서 모듈 추가를 클릭한 다음 추가를 클릭합니다.

    3. Module1.vb 코드 파일에서 다음 코드를 추가합니다.

      Module Module1
      
          Function Main() As Integer
              Application.EnableVisualStyles()
              Application.SetCompatibleTextRenderingDefault(False)
              Dim f As New Form1()
              Application.Run(f)
              If (Not f.accepted) Then
                  Return -1
              Else
                  Return 0
              End If
          End Function
      
      End Module
      
    4. 프로젝트 메뉴에서 ConsentDialog 속성을 클릭하고 애플리케이션 탭을 클릭합니다.

    5. 애플리케이션 프레임워크 사용의 선택을 취소합니다.

    6. 시작 개체 드롭다운 메뉴에서 Module1을 선택합니다.

      참고 항목

      응용 프로그램 프레임워크를 사용하지 않도록 설정하면 비주얼 스타일, 응용 프로그램 이벤트, 시작 화면, 단일 인스턴스 응용 프로그램 등과 같은 기능이 비활성화됩니다. 자세한 내용은 Application Page, Project Designer (Visual Basic)을 참조하세요.

      Visual C# 개발자에만 해당:

      program.cs 코드 파일을 열고 다음 코드를 추가합니다.

      static int Main()
      {
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
          Form1 f = new Form1();
          Application.Run(f);
          if (!f.accepted)
              return -1;
          else
              return 0;
      }
      
  26. 빌드 메뉴에서 BuildSolution을 클릭합니다.

사용자 지정 부트스트래퍼 패키지 만들기

최종 사용자에게 개인 정보 프롬프트를 표시하려면 동의 업데이트 대화 상자 애플리케이션의 사용자 지정 부트스트래퍼 패키지를 만들고, 이 애플리케이션을 모든 ClickOnce 애플리케이션에 필수 구성 요소로 포함해야 합니다.

이 절차에서는 다음 문서를 만들어 사용자 지정 부트스트래퍼 패키지를 만드는 방법을 보여줍니다.

  • 부트스트래퍼의 내용을 설명하는 product.xml 매니페스트 파일.

  • 문자열이나 소프트웨어 사용 조건 같은 패키지의 지역화 관련 측면을 나열하는 package.xml 매니페스트 파일.

  • 소프트웨어 사용 조건 관련 문서.

1단계: 부트스트래퍼 디렉터리를 만들려면

  1. %PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\PackagesUpdateConsentDialog라는 디렉터리를 만듭니다.

    참고 항목

    이 폴더를 만들려면 관리자 권한이 필요할 수 있습니다.

  2. UpdateConsentDialog 디렉터리에 en이라는 하위 디렉터리를 만듭니다.

    참고 항목

    각 로캘에 대한 새 디렉터리를 만듭니다. 예를 들어 fr 및 de 로캘의 하위 디렉터리를 추가할 수 있습니다. 필요한 경우 이러한 디렉터리에 프랑스어 및 독일어 문자열과 언어 팩이 포함됩니다.

2단계: product.xml 매니페스트 파일을 만들려면

  1. product.xml이라는 텍스트 파일을 만듭니다.

  2. product.xml 파일에 다음 XML 코드를 추가합니다. 기존 XML 코드를 덮어쓰면 안 됩니다.

    <Product
      xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
      ProductCode="Microsoft.Sample.EULA">
      <!-- Defines the list of files to be copied on build. -->
      <PackageFiles CopyAllPackageFiles="false">
        <PackageFile Name="ConsentDialog.exe"/>
      </PackageFiles>
    
      <!-- Defines how to run the Setup package.-->
      <Commands >
        <Command PackageFile = "ConsentDialog.exe" Arguments=''>
          <ExitCodes>
            <ExitCode Value="0" Result="Success" />
            <ExitCode Value="-1" Result="Fail" String="AU_Unaccepted" />
            <DefaultExitCode Result="Fail"
              FormatMessageFromSystem="true" String="GeneralFailure" />
          </ExitCodes>
        </Command>
      </Commands>
    
    </Product>
    
  3. 파일을 UpdateConsentDialog 부트스트래퍼 디렉터리에 저장합니다.

3단계: package.xml 매니페스트 파일과 소프트웨어 사용 조건을 만들려면

  1. package.xml이라는 텍스트 파일을 만듭니다.

  2. package.xml 파일에 다음 XML 코드를 추가하여 로캘을 정의하고 소프트웨어 사용 조건을 포함합니다. 기존 XML 코드를 덮어쓰면 안 됩니다.

    <Package
      xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
      Name="DisplayName"
      Culture="Culture"
      LicenseAgreement="eula.rtf">
      <PackageFiles>
        <PackageFile Name="eula.rtf"/>
      </PackageFiles>
    
      <!-- Defines a localizable string table for error messages. -->
      <Strings>
        <String Name="DisplayName">Update Consent Dialog</String>
        <String Name="Culture">en</String>
        <String Name="AU_Unaccepted">The automatic update agreement is not accepted.</String>
        <String Name="GeneralFailure">A failure occurred attempting to launch the setup.</String>
      </Strings>
    </Package>
    
  3. 파일을 UpdateConsentDialog 부트스트래퍼 디렉터리의 en 하위 디렉터리에 저장합니다.

  4. 소프트웨어 사용 조건을 위한 eula.rtf라는 문서를 만듭니다.

    참고 항목

    소프트웨어 사용 조건에는 라이선싱, 보증, 법률 및 현지 법률에 대한 정보가 포함되어야 합니다. 이러한 파일은 로캘별로 지정되어야 하므로, 파일은 MBCS 또는 UNICODE 문자를 지원하는 형식으로 저장되어야 합니다. 소프트웨어 사용 조건의 콘텐츠에 대해서는 법률 부서에 문의하세요.

  5. 문서를 UpdateConsentDialog 부트스트래퍼 디렉터리의 en 하위 디렉터리에 저장합니다.

  6. 필요한 경우 각 로캘의 소프트웨어 사용 조건에 대한 새 package.xml 매니페스트 파일과 새 eula.rtf 문서를 만듭니다. 예를 들어 fr 및 de 로캘의 하위 디렉터리를 만든 경우에는 별도의 package.xml 매니페스트 파일 및 소프트웨어 사용 조건을 만들고 fr 및 de 하위 디렉터리에 저장합니다.

Visual Studio에서 업데이트 동의 애플리케이션을 필수 조건으로 설정할 수 있습니다.

  1. 솔루션 탐색기에서 배포할 애플리케이션의 이름을 클릭합니다.

  2. 프로젝트 메뉴에서 ProjectName 속성을 클릭합니다.

  3. 게시 페이지를 클릭하고 사전 요구 사항을 클릭합니다.

  4. 업데이트 동의 대화 상자를 선택합니다.

    참고 항목

    업데이트 동의 대화가 필수 조건 대화 상자에 표시되려면 Visual Studio 닫았다가 다시 열어야 합니다.

  5. 확인을 클릭합니다.

설치 프로그램 만들기 및 테스트

업데이트 동의 애플리케이션을 필수 조건으로 설정한 후에는 애플리케이션에 대한 설치 관리자와 부트스트래퍼를 생성할 수 있습니다.

[동의]를 클릭하지 않고 설치 프로그램을 만들고 테스트하려면

  1. 솔루션 탐색기에서 배포할 애플리케이션의 이름을 클릭합니다.

  2. 프로젝트 메뉴에서 ProjectName 속성을 클릭합니다.

  3. 게시 페이지를 클릭하고 지금 게시를 클릭합니다.

  4. 게시 출력이 자동으로 열리지 않으면 게시 출력으로 이동합니다.

  5. Setup.exe 프로그램을 실행합니다.

    설치 프로그램에서 업데이트 동의 대화 상자 소프트웨어 사용권 계약이 표시됩니다.

  6. 소프트웨어 사용권 계약을 읽고 동의를 클릭합니다.

    업데이트 동의 대화 상자 애플리케이션이 나타나고, "설치하려는 애플리케이션은 웹에서 최신 업데이트를 확인합니다."라는 텍스트가 표시됩니다. [동의]를 클릭하면 인터넷에서 업데이트를 자동으로 확인하는 권한이 애플리케이션에 부여됩니다.

  7. 애플리케이션을 닫거나 [취소]를 클릭합니다.

    애플리케이션에서 "ApplicationName에 대한 시스템 구성 요소를 설치하는 동안 오류가 발생했습니다."라는 오류가 표시됩니다. 설치는 모든 시스템 구성 요소가 성공적으로 설치된 후에만 진행할 수 없습니다.

  8. 세부 정보를 클릭하여 다음 오류 메시지를 표시합니다. 구성 요소 업데이트 동의 대화 상자가 “자동 업데이트 계약이 수락되지 않았습니다.”라는 오류 메시지와 함께 설치에 실패합니다. 다음 구성 요소를 설치하지 못했습니다. - 업데이트 동의 대화 상자

  9. 닫기를 클릭합니다.

[동의]를 클릭하여 설치 프로그램을 만들고 테스트하려면

  1. 솔루션 탐색기에서 배포할 애플리케이션의 이름을 클릭합니다.

  2. 프로젝트 메뉴에서 ProjectName 속성을 클릭합니다.

  3. 게시 페이지를 클릭하고 지금 게시를 클릭합니다.

  4. 게시 출력이 자동으로 열리지 않으면 게시 출력으로 이동합니다.

  5. Setup.exe 프로그램을 실행합니다.

    설치 프로그램에서 업데이트 동의 대화 상자 소프트웨어 사용권 계약이 표시됩니다.

  6. 소프트웨어 사용권 계약을 읽고 동의를 클릭합니다.

    업데이트 동의 대화 상자 애플리케이션이 나타나고, "설치하려는 애플리케이션은 웹에서 최신 업데이트를 확인합니다."라는 텍스트가 표시됩니다. [동의]를 클릭하면 인터넷에서 업데이트를 자동으로 확인하는 권한이 애플리케이션에 부여됩니다.

  7. 동의를 클릭하고 계속을 클릭합니다.

    애플리케이션이 설치를 시작합니다.

  8. 애플리케이션 설치 대화 상자가 표시되면 설치를 클릭합니다.