Файл: Лабораторная работа 35. Разработка инсталляционного пакета. Разработка.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.01.2024
Просмотров: 81
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
| /Министерство науки и высшего образования Российской Федерации |
| федеральное государственное бюджетное образовательное учреждение высшего образования |
| "Российский экономический университет имени Г.В. Плеханова" |
| МОСКОВСКИЙ ПРИБОРОСТРОИТЕЛЬНЫЙ ТЕХНИКУМ |
| Выполнил студент: Группы И-3-17 Коваленко М.С. «__» ___________2020 год Подпись: _________ | Проверил преподаватель: Морозов И.А. «__»___________ 2020 года Оценка: _________ Подпись: ________ |
-
Установка вручную — установка выполняется без установщика или со значительным количеством операций, вручную выполняемых пользователем. -
«Тихая» установка — установка, в процессе которой не отображаются сообщения или окна. «„Тихая“ установка» не является синонимом «автоматическая установка», хотя часто ошибочно используется в этом значении. -
Автоматическая установка — установка, которая выполняется без вмешательства со стороны пользователя, исключая, конечно, сам процесс её запуска. Процесс установки иногда требует взаимодействия с пользователем, который управляет процессом установки, делая выбор: принимая пользовательское соглашение, настраивая параметры, указывая пароли и так далее. В графических средах могут использоваться инсталляторы, которые предоставляют так называемого Мастера установки, однако и они зачастую предоставляют параметры командной строки, позволяющие выполнить полностью автоматическую установку. -
Самостоятельная установка — установка, которая не требует начального запуска процесса. Например, Vodafone Mobile Connect USB Modem, который устанавливается с USB-порта компьютера при подключении к нему без необходимости в ручном запуске. -
Удалённая установка — установка, которая выполняется без использования монитора, подсоединённого к компьютеру пользователя (в частности, выполняемая на компьютере без видеовыхода вообще). Это может быть контролируемая установка с другой машины, соединенной через локальную сеть или посредством последовательного кабеля. Автоматическая и удалённая установки являются обычными операциями, выполняемыми системными администраторами.
-
«Чистая» установка — установка, выполняемая в отсутствие таких факторов, которые могут изменяться от программы к программе. Ввиду сложности типичной установки, имеется множество факторов, влияющих на её успешный исход. В частности, файлы, оставшиеся от предыдущей установки этой же программы, или нестабильное состояние операционной системы могут привести к неправильной установке и работе программы. -
Непосредственная установка — установка программы, выполняемая с её копии на жестком диске (называемой flat copy), а не с самого оригинального носителя (обычно компакт- или DVD-диск). Это может быть полезным в ситуациях, когда целевая машина не способна справиться с произвольным доступом для чтения с оптических дисководов во время выполнения задач, вызывающих большую загрузку процессора, как, например, при установке программ.
| Package Management System | Installer |
| Обычно часть операционной системы | Каждый продукт поставляется вместе со своим установщиком |
| Использует одну базу данных для установки | Производит свою установку |
| Может проверять и управлять всеми пакетами в системе | Работает только со связанным продуктом |
| Один производитель | Много производителей |
| Один формат пакета | Много форматов установщика |
Рисунок 1 - создаем файлыПКМ по проекту в обозревателе решений, свойстваРисунок 2 - свойстваВыбрать вкладку ресурсыРисунок 3 - ресурсыДобавить созданные текстовые файлы Рисунок 4 - добавление ресурсовВ модуле ConfigurationWindow.cs, дописываем следующий программный код:
-
Объявляем логическую переменную:
-
Дополняем метод ConfigurationWindow:
-
}Создаем локальный метод 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);
}
-
Описываем локальный метод 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 –Объекты и их события
| Название объекта | Событие |
| ConfigurationWindow | FormClosing |
| btNext | Click |
| btBack | Click |
| btCancel | Click |
| chbxAgree | Click |
| llblErrorStatus | LinkClicked |
| btBrowse | Click |
-
описание методов событий:
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 + @"Приложение ИС\";
}
}
-
Через обозреватель решения, по проекту ПКМ, свойства
-
Перейти на вкладку «Безопасность»
-
Запустить проект.