Пошаговое руководство. Создание пользовательского загрузчика для вывода окна с предупреждением о конфиденциальности
Приложения ClickOnce можно настроить таким образом, чтобы автоматически обновлять их при появлении сборок с более новыми версиями файлов или более новых версий сборок.Чтобы убедиться в том, что пользователи согласны с этим поведением, в программе можно отобразить окно подтверждения.В этом окне пользователи могут разрешить приложению автоматическое обновление или запретить его.Если автоматическое обновление приложения не разрешено, оно не устанавливается.
Примечание |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
- Visual Studio 2010.
Создание диалогового окна подтверждения обновления
Чтобы отобразить окно подтверждения, следует создать приложение, запрашивающее у пользователя согласие на выполнение автоматических обновлений приложения.
Создание диалогового окна подтверждения
В меню Файл последовательно выберите пункты Создать и Проект.
В диалоговом окне Создать проект выберите пункт Windows, а затем — пункт ПриложениеWindowsForms.
В поле Имя введите ConsentDialog, а затем нажмите кнопку OK.
Выберите форму в конструкторе.
В окне Свойства измените значение свойства Текст на Update Consent Dialog.
Перейдите к панели элементов, разверните узел Все формы Windows Forms и перетащите элемент управления Label в форму.
В конструкторе форм щелкните элемент управления Label.
В окне Свойства замените значение свойства Текст в разделе Внешний вид на следующее значение.
Устанавливаемое приложение проверяет наличие последних обновлений в Интернете.Нажав кнопку "Принимаю", пользователь разрешает приложению автоматически проверять наличие обновлений в Интернете и устанавливать их.
Перейдите на панель элементов и перетащите элемент управления Флажок в середину формы.
В окне Свойства замените значение свойства Текст в разделе Структура на значение "Принимаю".
Перейдите на панель элементов и перетащите элемент управления Кнопка в левый нижний угол формы.
В окне Свойства замените значение свойства Текст в разделе Структура на значение "Продолжить".
В окне Свойства замените значение свойства (Имя) в разделе Конструктор на значение ProceedButton.
Перейдите на панель элементов и перетащите элемент управления Кнопка в правый нижний угол формы.
В окне Свойства замените значение свойства Текст в разделе Структура на значение "Отмена".
В окне Свойства замените значение свойства (Имя) в разделе Конструктор на значение CancelButton.
Дважды щелкните флажок Принимаю в конструкторе, чтобы создать обработчик событий CheckedChanged.
Добавьте следующий код для обработчика событий CheckedChanged в файле кода Form1.
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged ProceedButton.Enabled = Not ProceedButton.Enabled End Sub
private void checkBox1_CheckedChanged(object sender, EventArgs e) { ProceedButton.Enabled = !ProceedButton.Enabled; }
Измените конструктор класса, чтобы по умолчанию отключить кнопку Продолжить.
Public Sub New() InitializeComponent() ProceedButton.Enabled = False End Sub
public Form1() { InitializeComponent(); ProceedButton.Enabled = false; }
Добавьте следующий код для логической переменной в файл кода Form1, чтобы отслеживать согласие пользователя на выполнение Интернет-обновлений.
Public accepted As Boolean = False
public bool accepted = false;
В конструкторе дважды щелкните кнопку Продолжить, чтобы создать обработчик событий Click.
Добавьте следующий код в обработчик событий Click файла кода Form1 для кнопки Продолжить.
Private Sub ProceedButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProceedButton.Click If ProceedButton.Enabled Then accepted = True Me.Close() End If End Sub
private void ProceedButton_Click(object sender, EventArgs e) { if (ProceedButton.Enabled) { accepted = true; this.Close(); } }
В конструкторе дважды щелкните кнопку Отмена, чтобы создать обработчик событий Click.
Добавьте следующий код в обработчик событий Click файла кода Form1 для кнопки Отмена.
Private Sub CancelButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancelButton.Click Me.Close() End Sub
private void CancelButton_Click(object sender, EventArgs e) { this.Close(); }
Измените приложение, чтобы вернуть ошибку в том случае, если конечный пользователь не даст своего согласия на Интернет-обновления.
Только для разработчиков на Visual Basic:
В Обозревателе решений щелкните элемент ConsentDialog.
В меню Проект выберите команду Добавить модуль и щелкните элемент Добавить.
Добавьте следующий код в файл кода 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
Откройте меню Проект, щелкните команду Свойства ConsentDialog, а затем щелкните вкладку Приложение.
Снимите флажок Включить исполняющую среду.
В раскрывающемся меню Начальный объект выберите элемент Module1.
Примечание Отключение исполняющей среды приводит к отключению следующих функций: визуальных стилей Windows XP, событий приложения, экрана-заставки, единого экземпляра приложения и пр.Дополнительные сведения см. в разделе Страница "Приложение" в конструкторе проектов (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; }
В меню Построение выберите команду Построитьрешение.
Создание пользовательского пакета загрузчика
Чтобы отобразить окно подтверждения конечным пользователям, можно создать настраиваемый пакет загрузчика для приложения Update Consent Dialog и включить его в число необходимых компонентов для всех приложений ClickOnce.
Ниже представлены действия по созданию настраиваемого пакета загрузчика путем создания следующих документов:
Файл манифеста product.xml, описывающий содержимое загрузчика.
Файл манифеста package.xml, описывающий особенности локализации пакета, например строки и условия лицензирования продукта.
Документ с условиями лицензии программного обеспечения.
Шаг 1. Создание каталога загрузчика
Создайте каталог с именем UpdateConsentDialog в папке %PROGRAMFILES%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages.
Примечание Для создания этой папки могут потребоваться полномочия администратора.
Создайте вложенную папку en в каталоге UpdateConsentDialog.
Примечание Создайте каталог для каждого языкового стандарта.Например, можно добавить вложенные папки для языковых стандартов fr и de.При необходимости эти каталоги могут содержать строки и языковые пакеты для французского и немецкого языка.
Шаг 2. Создание файла манифеста product.xml
Создайте текстовый файл с именем product.xml.
Добавьте следующий XML-код в файл product.xml.Убедитесь в том, что существующий XML-код не перезаписывается.
<Product xmlns="https://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>
Сохраните файл в каталог загрузчика UpdateConsentDialog.
Шаг 3. Создание файла манифеста package.xml и условий лицензии
Создайте текстовый файл с именем package.xml.
Добавьте в файл package.xml следующий XML-код, чтобы определить языковой стандарт и добавить условия лицензии программного обеспечения.Убедитесь в том, что существующий XML-код не перезаписывается.
<Package xmlns="https://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>
Сохраните файл во вложенную папку en каталога загрузчика UpdateConsentDialog.
Создайте документ с именем eula.rtf для условий лицензии.
Примечание В условия лицензии должны входить сведения о лицензировании, гарантиях, ответственности и местном законодательстве.Эти файлы должны быть привязаны к языковому стандарту, поэтому следует убедиться в том, что файл сохранен в формате, который поддерживает символы MBCS или UNICODE.Проконсультируйтесь с юридическим отделом вашей компании о содержании условий лицензии для программного обеспечения.
Сохраните документ во вложенную папку en каталога загрузчика UpdateConsentDialog.
При необходимости также создайте файлы манифеста package.xml и документы условий лицензии eula.rtf для каждого языкового стандарта.Например, если для языковых стандартов fr и de созданы вложенные папки, следует создать отдельные файлы манифеста package.xml и условия лицензии, а затем сохранить их во вложенные папки fr и de.
Установка приложения согласия на обновления в качестве необходимого компонента
Visual Studio позволяет установить приложение согласия на установку в качестве обязательного компонента.
Установка приложения согласия на обновления в качестве необходимого компонента
В Обозревателе решений щелкните имя приложения, которое требуется развернуть.
В меню Проект выберите пункт **Свойства:**имя_проекта.
Перейдите на страницу Опубликовать, а затем нажмите кнопку Необходимые компоненты.
Выберите элемент Update Consent Dialog.
Примечание Для отображения элемента Update Consent Dialog в диалоговом окне "Необходимые компоненты" может потребоваться закрытие и повторное открытие Visual Studio.
Нажмите кнопку ОК.
Создание и тестирование программы установки
После установки приложения Update Consent в качестве необходимого компонента можно создать установщик загрузчик для приложения.
Создание и тестирование программы установки без установки флажка "Принимаю"
В Обозревателе решений щелкните имя приложения, которое требуется развернуть.
В меню Проект выберите пункт **Свойства:**имя_проекта.
Перейдите на страницу Публикации и щелкните элемент Опубликовать сейчас.
Если результат публикации не открывается автоматически, перейдите к результату самостоятельно.
Запустите программу Setup.exe.
Программа установки отобразит условия лицензии программного обеспечения Update Consent Dialog.
Ознакомьтесь с лицензионным соглашением и нажмите кнопку Принять.
Отображается приложение Update Consent Dialog со следующим текстом: "Устанавливаемое приложение проверяет наличие последних обновлений в Интернете.Установив флажок «Принимаю», пользователь разрешает приложению автоматически проверять наличие обновлений в Интернете".
Закройте приложение или нажмите кнопку "Отмена".
Приложение отобразит ошибку: "Произошла ошибка при установке системных компонентов для имя_программы.Продолжение установки невозможно до тех пор, пока все системные компоненты не будут успешно установлены".
Нажмите кнопку "Подробнее", чтобы отобразить следующее сообщение об ошибке: "Не удалось установить компонент Update Consent Dialog. Получено сообщение об ошибке: «Автоматическое согласие на обновление не принимается». Не удалось установить следующие компоненты: - Update Consent Dialog"
Нажмите кнопку Закрыть.
Создание и тестирование программы установки с установкой флажка "Принимаю"
В Обозревателе решений щелкните имя приложения, которое требуется развернуть.
В меню Проект выберите пункт **Свойства:**имя_проекта.
Перейдите на страницу Публикации и щелкните элемент Опубликовать сейчас.
Если результат публикации не открывается автоматически, перейдите к результату самостоятельно.
Запустите программу Setup.exe.
Программа установки отобразит условия лицензии программного обеспечения Update Consent Dialog.
Ознакомьтесь с лицензионным соглашением и нажмите кнопку Принять.
Отображается приложение Update Consent Dialog со следующим текстом: "Устанавливаемое приложение проверяет наличие последних обновлений в Интернете.Установив флажок «Принимаю», пользователь разрешает приложению автоматически проверять наличие обновлений в Интернете".
Установите флажок Принимаю, а затем нажмите кнопку Продолжить.
Начнется установка приложения.
Если отобразится диалоговое окно установки приложения, нажмите кнопку Установить.
См. также
Задачи
Практическое руководство. Создание манифеста продукта
Практическое руководство. Создание манифеста пакета
Ссылки
Справочные сведения о схеме пакетов и продуктов