Использование данных, получаемых при установке
При установке некоторых программ требуется определять не только каталог установки, но и другие параметры, необходимые для работы приложения. Рассмотрим использование данных пользователя для пакета, устанавливающего базу данных7). Создайте новую библиотеку (тип проекта — Visual C# Projects, шаблон — Class Library) и назовите ее InstallerClass. В окне Solution Explorer щелкаем правой кнопкой на названии проекта и выбираем пункт меню Add New Item. В появившемся окне выбираем шаблон Installer Class и называем его CustomActionDB (рис. 9.56).

Рис. 9.56. Добавление шаблона Installer Class
Удаляем из проекта Class1.cs. В окне Server Explorer на заголовке Data Connection щелкаем правой кнопкой мыши и выбираем пункт Add Connection. В открывшемся окне на вкладке "Подключение" выбираем или вводим название SQL-сервера (для подключения к локальному серверу вводим "(local)"), выбираем для входа в сеть учетные сведения Windows NT, а в выпадающем списке названий баз данных выбираем или вводим master. Завершив настройку соединения, проверяем подключение и нажимаем OK. В окне Solution Explorer щелкаем правой кнопкой на классе CustomActionDB и выбираем View Designer. Из окна Toolbox добавляем объект SqlConnection и в свойстве ConnectionString указываем только что созданное подключение. В окне Solution Explorer щелкаем правой кнопкой на названии проекта и добавляем к нему TextFile, который называем sqlScript.txt (рис. 9.57).

Рис. 9.57. Добавленный текстовый файл sqlScript.txt
В этом текстовом файле вводим SQL-запрос на создание таблицы:
CREATE TABLE [dbo].[Employees] ( [Name] [char] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Rsvp] [int] NULL , [Requests] [nvarchar] (4000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY];
ALTER TABLE [dbo].[Employees] WITH NOCHECK ADD CONSTRAINT [PK_Employees] PRIMARY KEY CLUSTERED ( [Name] ) ON [PRIMARY];
В окне Properties файла sqlScript.txt устанавливаем значение свойства Build Action на Embedded Resource (рис. 9.58):

Рис. 9.58. Свойство Build Action для файла sqlScript.txt
Добавляем в класс CustomActionDB код, считывающий текстовый файл: