Skip to content

Commit 6eac287

Browse files
committed
Изменил распаковщик форм
1 parent ed2e72a commit 6eac287

File tree

2 files changed

+104
-4
lines changed

2 files changed

+104
-4
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#Использовать "../../bindata"
2+
#Использовать logos
3+
4+
Перем КомпонентаГотова;
5+
Перем Лог;
6+
Перем ПутьКФайлу;
7+
Перем ЭтоСборкаEXE;
8+
Перем ЭтоWindows;
9+
10+
// Производит распаковку формы .bin
11+
//
12+
// Параметры:
13+
// ПутьКФайлуФормы - Строка - Путь к файлу form.bin
14+
// ПутьККаталогуФормы - Строка - Путь к каталогу распаковки
15+
//
16+
Процедура Распаковать(Знач ПутьКФайлуФормы, Знач ПутьККаталогуФормы) Экспорт
17+
18+
Если Не КомпонентаГотова Тогда
19+
ПодготовитьКомпоненту();
20+
КонецЕсли;
21+
22+
dllРаспаковать(ПутьКФайлуФормы, ПутьККаталогуФормы);
23+
24+
КонецПроцедуры
25+
26+
Процедура ПриСозданииОбъекта()
27+
28+
Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.unpackForm");
29+
30+
КомпонентаГотова = Ложь;
31+
ЭтоСборкаEXE = ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE";
32+
ЭтоСборкаEXE = Истина;
33+
34+
СистемнаяИнформация = Новый СистемнаяИнформация;
35+
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
36+
37+
КонецПроцедуры
38+
39+
Процедура dllРаспаковать(Знач ФайлРаспаковки, Знач КаталогРаспаковки)
40+
41+
Если ЭтоСборкаEXE Тогда
42+
43+
ВыполнитьРаспаковку(ФайлРаспаковки, КаталогРаспаковки);
44+
45+
Иначе
46+
47+
Распаковщик = Новый ЧтениеФайла8(ФайлРаспаковки);
48+
Распаковщик.ИзвлечьВсе(КаталогРаспаковки, Истина);
49+
50+
КонецЕсли;
51+
52+
53+
КонецПроцедуры
54+
55+
Процедура ВыполнитьРаспаковку(Знач ФайлРаспаковки, Знач КаталогРаспаковки)
56+
57+
Лог.Отладка("Распаковываю файла <%1> в каталог <%2>", ФайлРаспаковки, КаталогРаспаковки);
58+
59+
КомандаUnpack = Новый Команда;
60+
КомандаUnpack.УстановитьРабочийКаталог(КаталогРаспаковки);
61+
КомандаUnpack.УстановитьКоманду(ПутьКФайлу);
62+
КомандаUnpack.ДобавитьПараметр("-P");
63+
КомандаUnpack.ДобавитьПараметр(ФайлРаспаковки);
64+
КомандаUnpack.ДобавитьПараметр(КаталогРаспаковки);
65+
КомандаUnpack.ПоказыватьВыводНемедленно(Истина);
66+
67+
КодВозврата = КомандаUnpack.Исполнить();
68+
69+
Если КодВозврата <> 0 Тогда
70+
ВызватьИсключение КомандаUnpack.ПолучитьВыводКоманды();
71+
КонецЕсли;
72+
73+
КонецПроцедуры
74+
75+
Процедура ПодготовитьКомпоненту()
76+
77+
ЗагрузчикДвоичныхДанных = Новый ЗагрузчикЗапакованныхФайловGitsyncPlugins;
78+
79+
Если ЭтоСборкаEXE Тогда
80+
81+
Если ЭтоWindows Тогда
82+
ПутьКФайлу = ЗагрузчикДвоичныхДанных.ПолучитьПутьКФайлу("v8unpack_d.exe");
83+
Иначе
84+
ПутьКФайлу = "v8unpack";
85+
КонецЕсли;
86+
87+
Иначе
88+
89+
ПутьКФайлу = ЗагрузчикДвоичныхДанных.ПолучитьПутьКФайлу("v8unpack.dll");
90+
//Лог.Отладка("Выполняю подключение <v8unpack.dll> из файла <%1>", ПутьКФайлу);
91+
ПодключитьВнешнююКомпоненту(ПутьКФайлу);
92+
93+
КонецЕсли;
94+
95+
КомпонентаГотова = Истина;
96+
97+
КонецПроцедуры
98+

src/Классы/unpackForm.os

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
Перем ВыполнятьПереименованиеModule;
1010
Перем ВыполнятьПереименованиеForm;
11+
Перем Распаковщик;
12+
1113

1214
#Область Интерфейс_плагина
1315

@@ -109,8 +111,9 @@
109111
Лог.Отладка("Найдено файлов form.bin: <%1> шт.", СписокФайлов.Количество());
110112

111113
Если СписокФайлов.Количество() > 0 Тогда
112-
Загрузчик_v8unpack = Новый Загрузчик_v8unpack;
113-
Загрузчик_v8unpack.ВыполнитьЗагрузку();
114+
115+
Распаковщик = Новый РаспаковкаФорм;
116+
114117
КонецЕсли;
115118

116119
Для Каждого ФайлФормы Из СписокФайлов Цикл
@@ -143,8 +146,7 @@
143146

144147
Процедура РаспаковатьКонтейнерМетаданных(Знач ФайлРаспаковки, Знач КаталогРаспаковки)
145148

146-
dllРаспаковать(ФайлРаспаковки, КаталогРаспаковки);
147-
ВыполнитьСборкуМусора(); // см. камент к процедуре dllРаспаковать
149+
Распаковщик.Распаковать(ФайлРаспаковки, КаталогРаспаковки);
148150

149151
Если ВыполнятьПереименованиеModule Тогда
150152
ПереименованиеModule(КаталогРаспаковки);

0 commit comments

Comments
 (0)