Файл: Лабораторная работа 35. Разработка инсталляционного пакета. Разработка.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.01.2024

Просмотров: 22

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

/Министерство науки и высшего образования Российской Федерации 

федеральное государственное бюджетное образовательное учреждение высшего образования 

"Российский экономический университет имени Г.В. Плеханова" 

МОСКОВСКИЙ  ПРИБОРОСТРОИТЕЛЬНЫЙ ТЕХНИКУМ 

 

 

Лабораторная работа 35. Разработка инсталляционного пакета. Разработка. 

 

 

МДК 03.01 Сопровождение и продвижение программного обеспечения отраслевой направленности   

ПМ 03 Сопровождение и продвижение программного обеспечения отраслевой направленности   

 

Тема: Разработка установочного пакета. 

 

Специальность: 09.02.05 «Прикладная информатика (по отраслям)»  

 

Квалификация: техник-программист 

 

 

Выполнил студент: 

Группы И-3-17 

Коваленко М.С.

«__» ___________2020 год 

Подпись: _________ 

 

Проверил преподаватель: 

Морозов И.А. 

«__»___________ 2020 года 

Оценка: _________ 

Подпись: ________ 

 

Лабораторная работа 35. Разработка инсталляционного пакета. Разработка инсталляционного пакета. 

Цель работы: Разработка установочного пакета. 

Продолжительность практической работы: 4 академических часа. 

Теоретические сведения 

  • Установка вручную — установка выполняется без установщика или со значительным количеством операций, вручную выполняемых пользователем. 

  • «Тихая» установка — установка, в процессе которой не отображаются сообщения или окна. «„Тихая“ установка» не является синонимом «автоматическая установка», хотя часто ошибочно используется в этом значении. 

  • Автоматическая установка — установка, которая выполняется без вмешательства со стороны пользователя, исключая, конечно, сам процесс её запуска. Процесс установки иногда требует взаимодействия с пользователем, который управляет процессом установки, делая выбор: принимая пользовательское соглашение, настраивая параметры, указывая пароли и так далее. В графических средах могут использоваться инсталляторы, которые предоставляют так называемого Мастера установки, однако и они зачастую предоставляют параметры командной строки, позволяющие выполнить полностью автоматическую установку. 

  • Самостоятельная установка — установка, которая не требует начального запуска процесса. Например, Vodafone Mobile Connect USB Modem, который устанавливается с USB-порта компьютера при подключении к нему без необходимости в ручном запуске. 

  • Удалённая установка — установка, которая выполняется без использования монитора, подсоединённого к компьютеру пользователя (в частности, выполняемая на компьютере без видеовыхода вообще). Это может быть контролируемая установка с другой машины, соединенной через локальную сеть или посредством последовательного кабеля. Автоматическая и удалённая установки являются обычными операциями, выполняемыми системными администраторами. 


  • «Чистая» установка — установка, выполняемая в отсутствие таких факторов, которые могут изменяться от программы к программе. Ввиду сложности типичной установки, имеется множество факторов, влияющих на её успешный исход. В частности, файлы, оставшиеся от предыдущей установки этой же программы, или нестабильное состояние операционной системы могут привести к неправильной установке и работе программы. 

  • Непосредственная установка — установка программы, выполняемая с её копии на жестком диске (называемой flat copy), а не с самого оригинального носителя (обычно компакт- или DVD-диск). Это может быть полезным в ситуациях, когда целевая машина не способна справиться с произвольным доступом для чтения с оптических дисководов во время выполнения задач, вызывающих большую загрузку процессора, как, например, при установке программ. 

Программа установки, установщик или инсталлятор— это программа, которая устанавливает программное обеспечение на компьютер. Некоторые установщики специально сделаны для установки содержащихся в них файлов, другие же являются универсальными и работают, считывая содержимое комплекта программного обеспечения, которое необходимо установить. 

Различия между системой управления пакетами и установщиком: 

Package Management System 

Installer 

Обычно часть операционной системы 

Каждый продукт поставляется вместе со своим установщиком 

Использует одну базу данных для установки 

Производит свою установку 

Может проверять и управлять всеми пакетами в системе 

Работает только со связанным продуктом 

Один производитель 

Много производителей 

Один формат пакета 

Много форматов установщика 

ЭТАПЫ ВЫПОЛНЕНИЯ 

Разработка функций по инсталляции файлов в конкретную папку 





Рисунок 1 - создаем файлы

ПКМ по проекту в обозревателе решений, свойства



Рисунок 2 - свойства

Выбрать вкладку ресурсы



Рисунок 3 - ресурсы

Добавить созданные текстовые файлы 



Рисунок 4 - добавление ресурсов

В модуле ConfigurationWindow.cs, дописываем следующий программный код:

  1. Объявляем логическую переменную: 

bool canclose = false;

  1. Дополняем метод ConfigurationWindow: 

public ConfigurationWindow()

{

InitializeComponent();

tbSteps.Controls.Remove(tpStep2);

tbSteps.Controls.Remove(tpStep3);

tbSteps.Controls.Remove(tpStep4);

tbSteps.Controls.Remove(tpStep5);


  1. }Создаем локальный метод SystemCheck: 



private void SystemCheck()

{

Action action = () =>

{

for (int i = 0; i < chlbCheckedSystem.Items.Count; i++)

{

switch (chlbCheckedSystem.Items[i])

{

case "Версия ОС":

int Major = Environment.OSVersion.Version.Major;

int Minor = Environment.OSVersion.Version.Minor;

if ((Major >= 6) && (Minor >= 0))

{

chlbCheckedSystem.SetItemCheckState(0, CheckState.Checked);

}

else

{

chlbCheckedSystem.SetItemCheckState(0, CheckState.Unchecked);

rtbSystemFailure.Text += "Данная операционная система не поддерживается программным продуктом!\nВыполните установку ОС: Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10!";

btNext.Enabled = false;

}

break;

case "Наличие Microsoft SQL Server":

RegistryKey SQLkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MICROSOFT\Microsoft SQL Server");

if (SQLkey != null)

{

chlbCheckedSystem.SetItemCheckState(1, CheckState.Checked);

}

else

{

chlbCheckedSystem.SetItemCheckState(1, CheckState.Unchecked);

rtbSystemFailure.Text += "\nНа данном ПК нет СУБД Microsoft SQL Server!\nВыполните установку!";

btNext.Enabled = false;

}

break;

case "Наличие .NetFramework 4.0":

RegistryKey Nfwkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0");

if (Nfwkey != null)

{

chlbCheckedSystem.SetItemCheckState(2, CheckState.Checked);

}

else

{

chlbCheckedSystem.SetItemCheckState(2, CheckState.Unchecked);

rtbSystemFailure.Text += "\nНа данном ПК нет . NetFrameWork 0.4!\nВыполните установку!";

llblErrorStatus.Visible = true;

llblErrorStatus.Enabled = true;

llblErrorStatus.Text = "https://support.microsoft.com/ru-ru/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows";

btNext.Enabled = false;

}

break;

case "Наличие Microsoft Office Word":

RegistryKey Wordkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MICROSOFT\Office\Word");

if (Wordkey != null)

{

chlbCheckedSystem.SetItemCheckState(3, CheckState.Checked);

}

else

{

chlbCheckedSystem.SetItemCheckState(3, CheckState.Unchecked);

rtbSystemFailure.Text += "\nНа данном ПК нет Microsoft Office Word!\nВыполните установку!";

btNext.Enabled = false;

}

break;

case "Наличие Microsoft Office Excel":

RegistryKey Excelkey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MICROSOFT\Office\Excel");

if (Excelkey != null)

{

chlbCheckedSystem.SetItemCheckState(4, CheckState.Checked);

}

else

{

chlbCheckedSystem.SetItemCheckState(4, CheckState.Unchecked);

rtbSystemFailure.Text += "\nНа данном ПК нет Microsoft Office Excel!\nВыполните установку!";

btNext.Enabled = false;

}

break;

}

}

};

Invoke(action);

}


  1. Описываем локальный метод Installation_Process: 

private void Installation_Process()

{

Action action = () =>

{

try

{

if (!Directory.Exists(tbPath.Text))

{

Directory.CreateDirectory(tbPath.Text);

}

File.WriteAllText(tbPath.Text + @"\f_1.txt", Resources._1);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_1.txt");

File.WriteAllText(tbPath.Text + @"\f_2.txt", Resources._2);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_2.txt");

File.WriteAllText(tbPath.Text + @"\f_3.txt", Resources._3);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_3.txt");

File.WriteAllText(tbPath.Text + @"\f_4.txt", Resources._4);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_4.txt");

File.WriteAllText(tbPath.Text + @"\f_5.txt", Resources._5);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_5.txt");

File.WriteAllText(tbPath.Text + @"\f_6.txt", Resources._6);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_6.txt");

File.WriteAllText(tbPath.Text + @"\f_7.txt", Resources._7);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_7.txt");

File.WriteAllText(tbPath.Text + @"\f_8.txt", Resources._8);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_8.txt");

File.WriteAllText(tbPath.Text + @"\f_9.txt", Resources._9);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_9.txt");

File.WriteAllText(tbPath.Text + @"\f_10.txt", Resources._10);

pgrsbrInstallationStatus.Value += 1;

lbxInstalStatus.Items.Add("Инсталяция пакета: " + tbPath.Text + @"f_10.txt");

lbxInstalStatus.Items.Add("Инсталяция завершена!");

btNext.Enabled = true;

btBack.Enabled = true;
}

catch (Exception ex)

{

lbxInstalStatus.Items.Add("Ошибка " + ex.Message);

}

};

Invoke(action);

}

  1. Обработка событий по компонентам, описанных в приведённой ниже таблице 

Таблица 1 –Объекты и их события  

Название объекта 

Событие 

ConfigurationWindow 

FormClosing 

btNext 

Click 

btBack 

Click 

btCancel 

Click 

chbxAgree 

Click 

llblErrorStatus 

LinkClicked 

btBrowse 

Click 

  1. описание методов событий:

private void ConfigurationWindow_FormClosing(object sender, FormClosingEventArgs e)

{

switch (canclose)

{

case true:

e.Cancel = false;

break;

case false:

switch (MessageBox.Show("Завершить или прервать установку?", "Установочный пакет", MessageBoxButtons.YesNo, MessageBoxIcon.Warning))

{

case DialogResult.Yes:

e.Cancel = false;

break;

case DialogResult.No:

e.Cancel = true;

break;

}

break;

}

}
private void btNext_Click(object sender, EventArgs e)

{

switch (btNext.Text)

{

case "Далее":

switch (tbSteps.SelectedIndex)

{

case 0:

btBack.Enabled = true;

btBack.Visible = true;

tbSteps.Controls.Add(tpStep2);

tbSteps.SelectedIndex = 1;

((Control)tpStep1).Enabled = false;

Thread thread = new Thread(SystemCheck);

thread.Start();

break;

case 1:

tbSteps.Controls.Add(tpStep3);

tbSteps.SelectedIndex = 2;

((Control)tpStep2).Enabled = false;

break;

case 2:

tbSteps.Controls.Add(tpStep4);

tbSteps.SelectedIndex = 3;

((Control)tpStep3).Enabled = false;

btBack.Enabled = false;

Thread thread1 = new Thread(Installation_Process);

thread1.Start();

break;

case 3:

tbSteps.Controls.Add(tpStep5);

tbSteps.SelectedIndex = 4;

btNext.Enabled = true;

((Control)tpStep4).Enabled = false;

btNext.Text = "Завершить";

btBack.Visible = false;

btBack.Enabled = false;

break;

}

break;

case "Завершить":

canclose = true;

switch (chbxFinish.Checked)

{

case true:

Process.Start(tbPath.Text);

Close();

break;

case false:

Close();

break;

}

break;

}
}
private void btBack_Click(object sender, EventArgs e)

{

switch (tbSteps.SelectedIndex)

{

case 1:

tbSteps.SelectedIndex = 0;

btBack.Visible = false;

btBack.Enabled = false;

tbSteps.Controls.Remove(tpStep2);

((Control)tpStep1).Enabled = true;

break;

case 2:

tbSteps.SelectedIndex = 1;

tbSteps.Controls.Remove(tpStep3);

((Control)tpStep2).Enabled = true;

break;

case 3:

tbSteps.SelectedIndex = 2;

tbSteps.Controls.Remove(tpStep4);

((Control)tpStep3).Enabled = true;

break;

}
}
private void btCancel_Click(object sender, EventArgs e)

{

Close();

}
private void chbxAgree_Click(object sender, EventArgs e)

{

switch (chbxAgree.Checked)

{

case true:

btNext.Enabled = true;

break;

case false:

btNext.Enabled = false;

break;

}
}
private void llblErrorStatus_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

string url;

if (e.Link.LinkData != null)

url = e.Link.LinkData.ToString();

else

url = llblErrorStatus.Text.Substring(e.Link.Start, e.Link.Length);

if (!url.Contains("://"))

url = "https://" + url;

var si = new ProcessStartInfo(url);

Process.Start(si);
}
private void btBrowse_Click(object sender, EventArgs e)

{

folderBrowserDialog1.ShowDialog();

tbPath.Text = folderBrowserDialog1.SelectedPath + @"Приложение ИС\";

}

}


  1. Через обозреватель решения, по проекту ПКМ, свойства 



Рисунок 5 - свойства

  1. Перейти на вкладку «Безопасность» 



Рисунок 6 - безопасность

  1. Запустить проект.



Рисунок 7 - закрытие загрузки



Рисунок 8 - принятие лицензионного соглашения



Рисунок 9 - проверка требований к системе



Рисунок 10 - выбор пути



Рисунок 11 - процесс установки



Рисунок 12 - завершение установки



Рисунок 13 - открытие папки установки

Вывод: Создал свой инсталляционный пакет и успешно провел установку тестовых файлов