1). Создайте проект развертывания.
1. В меню «Файл» выберите «Добавить проект», а затем выберите «Новый проект».
2. В диалоговом окне «Добавить новый проект» выберите «Проекты установки и развертывания» на панели «Типы проектов», а затем выберите «Проекты установки» на панели «Шаблоны». Введите setup1 в поле Имя.
3. Нажмите ОК, чтобы закрыть диалоговое окно.
4. Проект добавляется в обозреватель решений, и открывается редактор файловой системы.
5. В окне Свойства выберите свойство ProductName и введите Information Management System.
2). Добавьте выходные данные основного проекта программы в проект развертывания.
1. В редакторе файловой системы выберите «Папка приложения». В меню «Действия» выберите «Добавить», а затем выберите «Вывод проекта».
2. В диалоговом окне «Добавить выходную группу проекта» выберите «Ваша программа» в раскрывающемся списке «Проект».
3. Нажмите ОК, чтобы закрыть диалоговое окно.
4. Выберите из списка группы «Основной вывод» и «Файлы содержимого» и нажмите «ОК».
3). Создайте класс установщика.
1. В меню «Файл» выберите «Создать», а затем выберите «Проект».
2. В диалоговом окне «Новый проект» выберите «Проект Visual Basic» на панели «Типы проектов», а затем выберите «Библиотека классов» на панели «Шаблоны». Введите installDB в поле Имя.
3. Нажмите «Открыть», чтобы закрыть диалоговое окно.
4. Выберите «Добавить новый элемент» в меню «Проект».
5. Выберите «Класс установщика» в диалоговом окне «Добавить новый элемент». Введите installDB в поле Имя.
6. Нажмите ОК, чтобы закрыть диалоговое окно.
7. Подробный код прилагается.
4). Создайте диалоговое окно выборочной установки.
1. Выберите проект «setup1» в обозревателе решений. В меню «Вид» выберите «Редактор», а затем выберите «Пользовательский интерфейс».
2. В редакторе пользовательского интерфейса выберите узел «Запуск» в разделе «Установка». В меню «Действие» выберите «Добавить диалог».
3. В диалоговом окне «Добавить диалоговое окно» выберите диалоговое окно «Лицензионное соглашение» и нажмите «ОК», чтобы закрыть диалоговое окно.
4. В диалоговом окне «Добавить диалоговое окно» выберите диалоговое окно «Текстовое поле» (A) и нажмите «ОК», чтобы закрыть диалоговое окно.
5. В меню «Действие» выберите «Вверх». Повторяйте этот шаг до тех пор, пока диалоговое окно «Текстовое поле» (A) не окажется над узлом «Папка установки».
6. В окне «Свойства» выберите свойство BannerText и введите: установить базу данных.
7. Выберите свойство BodyText и введите: Установщик установит базу данных на целевой компьютер.
8. Выберите свойство Edit1Label и введите: имя базы данных:
9. Выберите свойство Edit1Property и введите CUSTOMTEXTA1.
10. Выберите свойство Edit1Value и введите: dbservers.
11. Выберите свойство Edit2Label и введите: имя сервера:
12. Выберите свойство Edit2Property и введите CUSTOMTEXTA2.
13. Выберите свойство Edit2Value и введите: (локальный)
14. Выберите свойство Edit3Label и введите: имя пользователя:
15. Выберите свойство Edit3Value и введите: sa
16. Выберите свойство Edit3Property и введите CUSTOMTEXTA3.
17. Выберите свойство Edit4Label и введите: Пароль:
18. Выберите свойство Edit4Property и введите CUSTOMTEXTA4.
19. Выберите свойства Edit2Visible, Edit3Visible и Edit4Visible и установите для них значение true.
5).Создание пользовательских операций.
1. Выберите проект «setup1» в обозревателе решений. В меню «Вид» выберите «Редактор», а затем выберите «Пользовательские действия».
2. Выберите узел «Установить» в редакторе дополнительных действий. В меню «Действия» выберите «Добавить дополнительное действие».
3. В диалоговом окне «Выбор элементов в проекте» дважды щелкните «Папка приложения».
4. Выберите пункт «Основной вывод из installDB (активный)» и нажмите «ОК», чтобы закрыть диалоговое окно.
5. В окне «Свойства» выберите свойство CustomActionData и введите «/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]"».
Вложение: /targetdir="[TARGETDIR]" — целевой путь после установки. Чтобы получить путь после установки в классе installDB, мы устанавливаем этот параметр.
6). Добавьте функцию удаления при упаковке:
Способ первый:
1. Добавьте файл msiexec.exe в упакованный проект (обычно он находится в папке c:windowssystem32).
2. Выберите папку приложения в представлении файловой системы, щелкните правой кнопкой мыши msiexec.exe, выберите «Создать ярлык» и переименуйте ярлык в «Удалить».
3. Измените аргументы этого ярлыка на «/x {идентификатор продукта}», а значение идентификатора продукта — это значение атрибута ProductCode упакованного проекта.
Способ 2: (рекомендуется)
1. Сначала сгенерируйте установочный пакет и запишите ProductCode (выберите корневой каталог обозревателя решений, например, setup1, а затем проверьте метку свойств, а не свойства при щелчке правой кнопкой мыши), который будет использоваться ниже.
2. Используйте VS.net для создания нового файла консольной программы uninst.exe.
'сила: домовладелец
'для 2000,xp,2003
Удаление модуля
Подглавная()
Dim myProcess As Process = Новый процесс
Если System.Environment.OSVersion.ToString.IndexOf("NT 5") Тогда
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") 'Измените свой собственный ProductCode
Конец, если
мойПроцесс.Закрыть()
Конец субтитра
Конечный модуль
3. Добавьте exe-файл в каталоге BIN консольной программы в файл упакованной программы и создайте ярлык для uninst.exe в группе программ.
класс installdb.vb, чтобы добавить ссылку на system.configuration.install.dll:
using System;
использование System.Collections;
использование System.ComponentModel;
используя System.Configuration.Install;
использование System.Reflection;
использование System.IO;
использование System.Data;
использование System.Data.SqlClient;
установка пространства имен
{
/// <сводка>
/// Краткое описание для Installer1.
/// </сводка>
[Выполнить установщик(истина)]
общедоступный класс Installer1: System.Configuration.Install.Installer
{
/// <сводка>
/// Обязательные переменные дизайнера.
/// </сводка>
частные компоненты System.ComponentModel.Container = null;
publicInstaller1()
{
// Этот вызов необходим дизайнеру.
ИнициализироватьКомпонент();
// TODO: добавить любую инициализацию после вызова InitializeComponent
}
/// <сводка>
/// Очистка всех используемых ресурсов.
/// </сводка>
защищенное переопределение void Dispose (удаление bool)
{
если (удаление)
{
если (компоненты! = ноль)
{
компоненты.Dispose();
}
}
base.Dispose(утилизация);
}
#region Код, созданный разработчиком компонента
/// <сводка>
/// Конструктор поддерживает необходимые методы — не используйте редактор кода для изменения
/// Содержимое этого метода.
/// </сводка>
частная пустота InitializeComponent()
{
компоненты = новый System.ComponentModel.Container();
}
#конечныйрегион
частная строка GetSql (имя строки)
{
// //Вызов osql для выполнения скрипта
//
// System.Diagnostics.Process sqlProcess = new System.Diagnostics.Process();
//
// sqlProcess.StartInfo.FileName = "osql.exe";
//
// sqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", this.Context.Parameters["user"], this .Context.Parameters["pwd"],"master", this.Context.Parameters["targetdir"]);
//
// sqlProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//
// sqlProcess.Start();
//
// sqlProcess.WaitForExit() ;//Ожидание выполнения
//
// sqlProcess.Close();
пытаться
{
// Сборка Asm = Assembly.GetExecutingAssembly();
// System.IO.FileInfo FileInfo = новый System.IO.FileInfo(Asm.Location);
// строка path=FileInfo.DirectoryName+@""+Name ;
строковый путь = this.Context.Parameters["targetdir"]+Name;
FileStream fs = новый FileStream (путь, FileMode.Open, FileAccess.Read, FileShare.Read);
Читатель StreamReader = новый StreamReader(fs,System.Text.Encoding.Default);
//Система.Текст.Кодировка.ASCII;
вернуть считыватель.ReadToEnd();
}
поймать (Исключение ex)
{
Console.Write("В GetSql:"+ex.Message);
бросить бывшего;
}
}
частная пустота ExecuteSql (строка DataBaseName, строка Sql)
{
SqlConnection sqlConnection1 = новый SqlConnection ();
sqlConnection1.ConnectionString =string.Format("server={0}; идентификатор пользователя={1}; пароль={2}; Database=master",this.Context.Parameters["server"],this.Context.Parameters[ "пользователь"],this.Context.Parameters["pwd"]);
Команда System.Data.SqlClient.SqlCommand = новый System.Data.SqlClient.SqlCommand(Sql,sqlConnection1);
пытаться
{
Команда.Соединение.Открыть();
Команда.Соединение.ИзменитьБазуДанных(ИмяБазы Данных);
Команда.ExecuteNonQuery();
}
поймать (исключение ex)
{
Console.Write("В обработчике исключений:"+ex.Message);
}
окончательно
{
Команда.Соединение.Закрыть();
}
}
protected void AddDBTable (строка strDBName)
{
пытаться
{
ExecuteSql("master","СОЗДАТЬ БАЗУ ДАННЫХ" + strDBName);
ExecuteSql(strDBName,GetSql("sql.txt"));
ExecuteSql("master","exec sp_addlogin 'myoamaster','myoamaster','"+strDBName+"',Null,Null");
ExecuteSql(strDBName, "EXEC sp_grantdbaccess 'myoamaster', 'myoamaster'");
ExecuteSql(strDBName,"exec sp_addrolemember 'db_owner','myoamaster'");
}
поймать (исключение ex)
{
Console.Write("В обработчике исключений:"+ex.Message);
}
}
общедоступное переопределение void Install(System.Collections.IDictionary stateSaver)
{
base.Install(stateSaver);
AddDBTable(this.Context.Parameters["dbname"]);
}
}
}
Здесь есть sql.txt, который представляет собой sql-скрипт базы данных. Конечно, вы можете вызвать osql для выполнения sql-скрипта. На самом деле это то же самое.
Файл sql.txt необходимо добавить при упаковке, иначе он не будет выполнен.
Если вы хотите прикрепить файл mdf и файл ldf базы данных, используйте следующую программу:
частная пустота CreateDataBase (строка strSql, строка DataName, строка strMdf, строка strLdf)
{
Строка ул;
SqlConnection myConn = новый SqlConnection (strSql);
//EXEC sp_detach_db @dbname = 'BX_FreightMileage_2'//Сначала необходимо отделить базу данных
str = "EXEC sp_attach_db @dbname = '"+ DataName +"', @filename1 = '"+ strMdf +"',@filename2='"+strLdf+"'";
SqlCommand myCommand = новый SqlCommand (str, myConn);
мойКонн.Открыть();
мояКоманда.ExecuteNonQuery();
мойКонн.Закрыть();
}
Разумеется, эти два файла базы данных также необходимо добавить при упаковке.