Skip to content

Commit 7a80bd2

Browse files
committed
Обработка события "ПередУстановкой " #134
Удаление файлов, указанных для удаления в манифесте пакета
1 parent d4ff7b3 commit 7a80bd2

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

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: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,14 @@
137137

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

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

145150
Исключение
@@ -157,6 +162,26 @@
157162
УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, "packagedef", Ложь);
158163
КонецПроцедуры
159164

165+
Процедура УдалитьФайлыУказанныеВМанифесте(Знач ОбработчикСобытий, Знач ПутьУстановки)
166+
167+
Если ОбработчикСобытий = Неопределено Тогда
168+
Возврат;
169+
КонецЕсли;
170+
171+
УдаляемыеФайлы = ОбработчикСобытий.УдаляемыеФайлы();
172+
Если УдаляемыеФайлы.Количество() = 0 Тогда
173+
Лог.Отладка("Не определены удаляемые файлы");
174+
Возврат;
175+
КонецЕсли;
176+
177+
Для Каждого УдаляемыйФайл Из УдаляемыеФайлы Цикл
178+
Лог.Отладка("Удаляем файл: " + УдаляемыйФайл);
179+
ПолныйПуть = Новый Файл(УдаляемыйФайл).ПолноеИмя;
180+
181+
УдалитьФайлыВКаталоге(ПутьУстановки.ПолноеИмя, УдаляемыйФайл, Истина);
182+
КонецЦикла;
183+
КонецПроцедуры
184+
160185
Процедура УдалитьФайлыВКаталоге(Знач ПутьКаталога, Знач МаскаФайлов, Знач ИскатьВПодкаталогах = Истина)
161186
ФайлыДляУдаления = НайтиФайлы(ПутьКаталога, МаскаФайлов, ИскатьВПодкаталогах);
162187
Для Каждого Файл из ФайлыДляУдаления Цикл
@@ -180,6 +205,20 @@
180205
Возврат ОбработчикСобытий;
181206
КонецФункции
182207

208+
Процедура ВызватьСобытиеПередУстановкой(Знач ОбработчикСобытий, Знач Каталог, Знач ЧтениеZipФайла)
209+
210+
Если ОбработчикСобытий = Неопределено Тогда
211+
Возврат;
212+
КонецЕсли;
213+
214+
Рефлектор = Новый Рефлектор;
215+
Если Рефлектор.МетодСуществует(ОбработчикСобытий, "ПередУстановкой") Тогда
216+
Лог.Отладка("Вызываю событие ПередУстановкой");
217+
ОбработчикСобытий.ПередУстановкой(Каталог, ЧтениеZipФайла);
218+
КонецЕсли;
219+
220+
КонецПроцедуры
221+
183222
Процедура ВызватьСобытиеПриУстановке(Знач ОбработчикСобытий, Знач Каталог, СтандартнаяОбработка)
184223

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

0 commit comments

Comments
 (0)