|
365 | 365 |
|
366 | 366 | ЧтениеСодержимого = Новый ЧтениеZipФайла(ФайлСодержимого); |
367 | 367 | Попытка |
368 | | - ИмяФайлаСпецификацииПакета = КонстантыOpm.ИмяФайлаСпецификацииПакета; |
369 | | - ЭлементСпецификацииПакета = ЧтениеСодержимого.Элементы.Найти(ИмяФайлаСпецификацииПакета); |
370 | | - Если ЭлементСпецификацииПакета <> Неопределено Тогда |
371 | | - Лог.Отладка("Найден файл спецификации пакета"); |
372 | | - |
373 | | - ЧтениеСодержимого.Извлечь(ЭлементСпецификацииПакета, мВременныйКаталогУстановки, РежимВосстановленияПутейФайловZIP.НеВосстанавливать); |
374 | | - Лог.Отладка("Компиляция файла спецификации пакета"); |
375 | | - ОбъектСкрипта = ЗагрузитьСценарий(ОбъединитьПути(мВременныйКаталогУстановки, ИмяФайлаСпецификацииПакета)); |
376 | | - |
377 | | - ВызватьСобытиеПередУстановкой(ОбъектСкрипта, ЧтениеСодержимого, ПутьУстановки.ПолноеИмя, СтандартнаяОбработка); |
378 | | - |
379 | | - Если СтандартнаяОбработка Тогда |
380 | | - |
381 | | - Лог.Отладка("Устанавливаю файлы пакета из архива"); |
382 | | - УдалитьУстаревшиеФайлы(ПутьУстановки); |
383 | | - ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя); |
384 | | - |
385 | | - ВызватьСобытиеПриУстановке(ОбъектСкрипта, ПутьУстановки.ПолноеИмя, СтандартнаяОбработка); |
386 | | - |
387 | | - КонецЕсли; |
388 | | - Иначе |
389 | | - Лог.Отладка("Устанавливаю файлы пакета из архива"); |
390 | | - УдалитьУстаревшиеФайлы(ПутьУстановки); |
391 | | - ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя); |
392 | | - КонецЕсли; |
| 368 | + |
| 369 | + Лог.Отладка("Устанавливаю файлы пакета из архива"); |
| 370 | + УдалитьУстаревшиеФайлы(ПутьУстановки); |
| 371 | + ЧтениеСодержимого.ИзвлечьВсе(ПутьУстановки.ПолноеИмя); |
| 372 | + |
| 373 | + ОбработчикСобытий = ПолучитьОбработчикСобытий(ПутьУстановки.ПолноеИмя); |
| 374 | + ВызватьСобытиеПриУстановке(ОбработчикСобытий, ПутьУстановки.ПолноеИмя, СтандартнаяОбработка); |
| 375 | + |
393 | 376 | Исключение |
394 | 377 | ЧтениеСодержимого.Закрыть(); |
395 | 378 | ВызватьИсключение; |
|
411 | 394 | КонецЦикла; |
412 | 395 | КонецПроцедуры |
413 | 396 |
|
414 | | -Процедура ВызватьСобытиеПередУстановкой(Знач ОбъектСкрипта, Знач АрхивПакета, Знач Каталог, СтандартнаяОбработка) |
415 | | - |
416 | | - Рефлектор = Новый Рефлектор; |
417 | | - Если Рефлектор.МетодСуществует(ОбъектСкрипта, "ПередУстановкой") Тогда |
418 | | - Лог.Отладка("Вызываю событие ПередУстановкой"); |
419 | | - ОбъектСкрипта.ПередУстановкой(АрхивПакета, Каталог, СтандартнаяОбработка); |
| 397 | +Функция ПолучитьОбработчикСобытий(Знач ПутьУстановки) |
| 398 | + ОбработчикСобытий = Неопределено; |
| 399 | + ИмяФайлаСпецификацииПакета = КонстантыOpm.ИмяФайлаСпецификацииПакета; |
| 400 | + ПутьКФайлуСпецификации = ОбъединитьПути(ПутьУстановки, ИмяФайлаСпецификацииПакета); |
| 401 | + Если ФС.ФайлСуществует(ПутьКФайлуСпецификации) Тогда |
| 402 | + Лог.Отладка("Найден файл спецификации пакета"); |
| 403 | + Лог.Отладка("Компиляция файла спецификации пакета"); |
| 404 | + |
| 405 | + ОписаниеПакета = Новый ОписаниеПакета(); |
| 406 | + ВнешнийКонтекст = Новый Структура("Описание", ОписаниеПакета); |
| 407 | + ОбработчикСобытий = ЗагрузитьСценарий(ПутьКФайлуСпецификации, ВнешнийКонтекст); |
420 | 408 | КонецЕсли; |
421 | 409 |
|
422 | | -КонецПроцедуры |
| 410 | + Возврат ОбработчикСобытий; |
| 411 | +КонецФункции |
| 412 | + |
| 413 | +Процедура ВызватьСобытиеПриУстановке(Знач ОбработчикСобытий, Знач Каталог, СтандартнаяОбработка) |
| 414 | + |
| 415 | + Если ОбработчикСобытий = Неопределено Тогда |
| 416 | + Возврат; |
| 417 | + КонецЕсли; |
423 | 418 |
|
424 | | -Процедура ВызватьСобытиеПриУстановке(Знач ОбъектСкрипта, Знач Каталог, СтандартнаяОбработка) |
425 | | - |
426 | 419 | Рефлектор = Новый Рефлектор; |
427 | | - Если Рефлектор.МетодСуществует(ОбъектСкрипта, "ПриУстановке") Тогда |
| 420 | + Если Рефлектор.МетодСуществует(ОбработчикСобытий, "ПриУстановке") Тогда |
428 | 421 | Лог.Отладка("Вызываю событие ПриУстановке"); |
429 | | - ОбъектСкрипта.ПриУстановке(Каталог, СтандартнаяОбработка); |
| 422 | + ОбработчикСобытий.ПриУстановке(Каталог, СтандартнаяОбработка); |
430 | 423 | КонецЕсли; |
431 | | - |
| 424 | + |
432 | 425 | КонецПроцедуры |
433 | 426 |
|
434 | 427 | Процедура СгенерироватьСкриптыЗапускаПриложенийПриНеобходимости(Знач КаталогУстановки, Знач ОписаниеПакета) |
|
0 commit comments