Skip to content

Commit 4ea3e33

Browse files
authored
Merge pull request #135 from oscript-library/feature/before-install-134
Событие "ПередУстановкой" + указание удаления файлов перед установкой
2 parents 0dd1168 + 1592908 commit 4ea3e33

File tree

4 files changed

+34
-1
lines changed

4 files changed

+34
-1
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ bdd-*.xml
66
src/oscript.cfg
77

88
src/cmd/oscript\.cfg
9+
exec.log
10+
test-reports/tests.xml

src/core/Классы/ОписаниеПакета.os

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@
206206
ТипыМодулей = Новый Структура("Класс,Модуль", "Класс", "Модуль");
207207

208208
мВключаемыеФайлы = Новый Массив;
209+
209210
мИсполняемыеФайлы = Новый ТаблицаЗначений;
210211
мИсполняемыеФайлы.Колонки.Добавить("Путь");
211212
мИсполняемыеФайлы.Колонки.Добавить("ИмяПриложения");

src/core/Классы/СборщикПакета.os

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,10 +259,22 @@
259259
|
260260
|");
261261

262+
ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером перед установкой пакета на клиентскую машину.");
263+
ЗаписьТекста.ЗаписатьСтроку("// ");
264+
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
265+
ЗаписьТекста.ЗаписатьСтроку("// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.");
266+
ЗаписьТекста.ЗаписатьСтроку("// ЧтениеZipФайла - ЧтениеZipФайла. Архив пакета.");
267+
ЗаписьТекста.ЗаписатьСтроку("// ");
268+
ЗаписьТекста.ЗаписатьСтроку("Процедура ПередУстановкой(Знач КаталогУстановкиПакета, Знач ЧтениеZipФайла) Экспорт");
269+
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику перед установкой, если требуется");
270+
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");
271+
ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);
272+
262273
ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после распаковки пакета на клиентскую машину.");
263274
ЗаписьТекста.ЗаписатьСтроку("// ");
264275
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
265276
ЗаписьТекста.ЗаписатьСтроку("// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.");
277+
ЗаписьТекста.ЗаписатьСтроку("// СтандартнаяОбработка - Булево. Возможность отменить стандартную обработку.");
266278
ЗаписьТекста.ЗаписатьСтроку("// ");
267279
ЗаписьТекста.ЗаписатьСтроку("Процедура ПриУстановке(Знач КаталогУстановкиПакета, СтандартнаяОбработка) Экспорт");
268280
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику установки, если требуется");

src/core/Классы/УстановкаПакета.os

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,13 @@
137137

138138
Лог.Отладка("Устанавливаю файлы пакета из архива");
139139
УдалитьУстаревшиеФайлы(ПутьУстановки);
140+
141+
ОбработчикСобытий = ПолучитьОбработчикСобытий(ПутьУстановки.ПолноеИмя);
142+
143+
ВызватьСобытиеПередУстановкой(ОбработчикСобытий, ПутьУстановки.ПолноеИмя, ЧтениеСодержимого);
144+
140145
ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя);
141146

142-
ОбработчикСобытий = ПолучитьОбработчикСобытий(ПутьУстановки.ПолноеИмя);
143147
ВызватьСобытиеПриУстановке(ОбработчикСобытий, ПутьУстановки.ПолноеИмя, СтандартнаяОбработка);
144148

145149
Исключение
@@ -180,6 +184,20 @@
180184
Возврат ОбработчикСобытий;
181185
КонецФункции
182186

187+
Процедура ВызватьСобытиеПередУстановкой(Знач ОбработчикСобытий, Знач Каталог, Знач ЧтениеZipФайла)
188+
189+
Если ОбработчикСобытий = Неопределено Тогда
190+
Возврат;
191+
КонецЕсли;
192+
193+
Рефлектор = Новый Рефлектор;
194+
Если Рефлектор.МетодСуществует(ОбработчикСобытий, "ПередУстановкой") Тогда
195+
Лог.Отладка("Вызываю событие ПередУстановкой");
196+
ОбработчикСобытий.ПередУстановкой(Каталог, ЧтениеZipФайла);
197+
КонецЕсли;
198+
199+
КонецПроцедуры
200+
183201
Процедура ВызватьСобытиеПриУстановке(Знач ОбработчикСобытий, Знач Каталог, СтандартнаяОбработка)
184202

185203
Если ОбработчикСобытий = Неопределено Тогда

0 commit comments

Comments
 (0)