-
Notifications
You must be signed in to change notification settings - Fork 32
/
MakePackage.os
129 lines (98 loc) · 7.73 KB
/
MakePackage.os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#Использовать gui
Procedure MakePackage()
КаталогСкрипта = ТекущийСценарий().Каталог;
КаталогПакета = КаталогСкрипта + "\Package\";
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.Прочитать(КаталогПакета + "VerInfo.txt");
НомерВерсии = СокрЛП(ТекстДок.ПолучитьСтроку(1));
ТекстДок = Неопределено;
НовыйНомерВЕрсии = НомерВерсии;
УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс();
Диалоги = УправляемыйИнтерфейс.СтандартныеДиалоги;
Если Диалоги.ВвестиСтроку(НовыйНомерВЕрсии, "Номер версии") И ЗначениеЗаполнено(НовыйНомерВЕрсии) Тогда
НомерВерсии = НовыйНомерВЕрсии;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(НомерВерсии) Тогда
Сообщить("Номер версии не задан, выходим");
return;
КонецЕсли;
Попытка
НомерВерсииЧислом = Цел(Число(НомерВерсии));
Исключение
Сообщить("Не удалось номер версии преобразовать к числу.");
Возврат;
КонецПопытки;
НомерВерсииБезТочек = СтрЗаменить(НомерВерсии, ".", "_");
// Очистим каталог от старых файлов
УдалитьФайлы(КаталогПакета, "*.*");
// Файл с номером версии
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.ДобавитьСтроку(НомерВерсии);
ТекстДок.Записать(КаталогПакета + "VerInfo.txt");
ТекстДок = Неопределено;
// Файл info.xml
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(КаталогПакета + "info.xml");
Запись.ЗаписатьБезОбработки("<?xml version=""1.0"" encoding=""UTF-8""?>");
Запись.ЗаписатьНачалоЭлемента("info");
Запись.ЗаписатьНачалоЭлемента("progid");
Запись.ЗаписатьТекст("RegEx");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("name");
Запись.ЗаписатьТекст("Регулярные выражения");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("version");
Запись.ЗаписатьТекст(НомерВерсии + ".0");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента(); //info
Запись.Закрыть();
// Файл манифест
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(КаталогПакета + "MANIFEST.XML");
Запись.ЗаписатьБезОбработки("<?xml version=""1.0"" encoding=""UTF-8""?>" + Символы.ПС);
Запись.ЗаписатьНачалоЭлемента("bundle");
Запись.ЗаписатьАтрибут("xmlns", "http://v8.1c.ru/8.2/addin/bundle");
Запись.ЗаписатьНачалоЭлемента("component");
Запись.ЗаписатьАтрибут("os", "Windows");
Запись.ЗаписатьАтрибут("path", "RegExWin32_" + НомерВерсииБезТочек + ".dll");
Запись.ЗаписатьАтрибут("type", "native");
Запись.ЗаписатьАтрибут("arch", "i386");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("component");
Запись.ЗаписатьАтрибут("os", "Windows");
Запись.ЗаписатьАтрибут("path", "RegExWin64_" + НомерВерсииБезТочек + ".dll");
Запись.ЗаписатьАтрибут("type", "native");
Запись.ЗаписатьАтрибут("arch", "x86_64");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("component");
Запись.ЗаписатьАтрибут("os", "Linux");
Запись.ЗаписатьАтрибут("path", "RegEx32_" + НомерВерсииБезТочек + ".so");
Запись.ЗаписатьАтрибут("type", "native");
Запись.ЗаписатьАтрибут("arch", "i386");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьНачалоЭлемента("component");
Запись.ЗаписатьАтрибут("os", "Linux");
Запись.ЗаписатьАтрибут("path", "RegEx64_" + НомерВерсииБезТочек + ".so");
Запись.ЗаписатьАтрибут("type", "native");
Запись.ЗаписатьАтрибут("arch", "x86_64");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
// Копируем файлы
КопироватьФайл(КаталогСкрипта + "\bin\RegExWin32.dll", КаталогПакета + "RegExWin32_" + НомерВерсииБезТочек + ".dll");
КопироватьФайл(КаталогСкрипта + "\bin64\RegExWin64.dll", КаталогПакета + "RegExWin64_" + НомерВерсииБезТочек + ".dll");
КопироватьФайл(КаталогСкрипта + "\linux\x32\RegEx32.so", КаталогПакета + "RegEx32_" + НомерВерсииБезТочек + ".so");
КопироватьФайл(КаталогСкрипта + "\linux\x64\RegEx64.so", КаталогПакета + "RegEx64_" + НомерВерсииБезТочек + ".so");
// Создаем ZIP
ЗаписьЗИП = Новый ЗаписьZipФайла(КаталогПакета + "RegEx1CAddin_" + НомерВерсииЧислом + ".zip");
ЗаписьЗИП.Добавить(КаталогПакета + "RegExWin32_" + НомерВерсииБезТочек + ".dll", РежимСохраненияПутейZIP.НеСохранятьПути);
ЗаписьЗИП.Добавить(КаталогПакета + "RegExWin64_" + НомерВерсииБезТочек + ".dll", РежимСохраненияПутейZIP.НеСохранятьПути);
ЗаписьЗИП.Добавить(КаталогПакета + "RegEx32_" + НомерВерсииБезТочек + ".so", РежимСохраненияПутейZIP.НеСохранятьПути);
ЗаписьЗИП.Добавить(КаталогПакета + "RegEx64_" + НомерВерсииБезТочек + ".so", РежимСохраненияПутейZIP.НеСохранятьПути);
ЗаписьЗИП.Добавить(КаталогПакета + "MANIFEST.XML", РежимСохраненияПутейZIP.НеСохранятьПути);
ЗаписьЗИП.Добавить(КаталогПакета + "VerInfo.txt", РежимСохраненияПутейZIP.НеСохранятьПути);
ЗаписьЗИП.Добавить(КаталогПакета + "info.xml", РежимСохраненияПутейZIP.НеСохранятьПути);
ЗаписьЗИП.Записать();
Сообщить("Файл " + "RegEx1CAddin_" + НомерВерсииЧислом + ".zip" + " записан.");
EndProcedure
MakePackage();