diff --git a/features/integration.feature b/features/integration.feature index b4fb0e9..abad3dd 100644 --- a/features/integration.feature +++ b/features/integration.feature @@ -40,3 +40,12 @@ И я вижу в консоли строку подобно ".*oscript$" И Я выполняю команду "which opm" И я вижу в консоли строку подобно ".*opm$" + +Сценарий: Проверка установки x64 и опции --x86 + Когда Я выполняю команду "ovm install stable" + Тогда я вижу в консоли вывод "Скачиваю установщик версии stable-x64..." + И я вижу в консоли вывод "Установка OneScript stable завершена" + + Когда Я выполняю команду "ovm install --x86 stable" + Тогда я вижу в консоли вывод "Скачиваю установщик версии stable..." + И я вижу в консоли вывод "Установка OneScript stable завершена" diff --git a/packagedef b/packagedef index 5ae92f6..6046d34 100644 --- a/packagedef +++ b/packagedef @@ -11,5 +11,6 @@ .ЗависитОт("logos") .ЗависитОт("tempfiles") .ЗависитОт("cli", "0.9.8") + .ЗависитОт("strings") .ИсполняемыйФайл("src/cmd/ovm.os", "ovm") ; diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Install.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Install.os" index 6edcfe6..282b3f7 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Install.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Install.os" @@ -15,7 +15,12 @@ КомандаПриложения.Опция("clean c", Ложь, "Полностью очищать каталог установки (включая установленные библиотеки)") .ВОкружении("OVM_INSTALL_CLEAN"); - + + Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда + КомандаПриложения.Опция("x86", Ложь, "Устанавливать 32-разрядный дистрибутив OneScript") + .ВОкружении("OVM_INSTALL_X86"); + КонецЕсли; + КомандаПриложения.Аргумент( "VERSION", , @@ -41,11 +46,17 @@ Если ЗначениеЗаполнено(АлиасВерсии) И МассивВерсийКУстановке.Количество() > 1 Тогда ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript"; КонецЕсли; + + Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда + ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86"); + Иначе + ИспользоватьХ64 = Ложь; + КонецЕсли; УстановщикOneScript = Новый УстановщикOneScript(); Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл - УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки); + УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64); КонецЦикла; Если МассивВерсийКУстановке.Количество() > 0 Тогда diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" index 6cbae40..ede1288 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" @@ -246,7 +246,7 @@ Если ВыполнятьУстановкуПриНеобходимости Тогда УстановщикOneScript = Новый УстановщикOneScript(); - УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия); + УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , , СистемнаяИнформация.Это64БитнаяОперационнаяСистема); Иначе ВызватьИсключение СтрШаблон("Не обнаружена требуемая версия <%1>", ИспользуемаяВерсия); КонецЕсли; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index a2402fd..fdbb289 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -2,6 +2,7 @@ #Использовать fs #Использовать tempfiles #Использовать logos +#Использовать strings Перем ЭтоWindows; Перем Лог; @@ -18,9 +19,14 @@ Процедура УстановитьOneScript( Знач ВерсияКУстановке, Знач АлиасВерсии = "", - Знач ОчищатьКаталогУстановки = Истина + Знач ОчищатьКаталогУстановки = Истина, + Знач ИспользоватьХ64 = Ложь ) Экспорт + Если ИспользоватьХ64 Тогда + ИспользоватьХ64 = ПроверитьВозможностьУстановкиX64(ВерсияКУстановке); + КонецЕсли; + Лог.Информация("Установка OneScript %1...", ВерсияКУстановке); Если НЕ ЗначениеЗаполнено(АлиасВерсии) Тогда @@ -42,7 +48,7 @@ Лог.Отладка("Каталог установки версии: %1", КаталогУстановкиВерсии); Попытка - ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке); + ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке, ИспользоватьХ64); УстановитьOneScriptИзZipАрхива(ФайлУстановщика, КаталогУстановкиВерсии); ДобавитьSHСкриптыПриНеобходимости(КаталогУстановкиВерсии); @@ -56,9 +62,9 @@ КонецПроцедуры -Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке) +Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке, Знач ИспользоватьХ64) - Лог.Информация("Скачиваю установщик версии %1...", ВерсияКУстановке); + Лог.Информация("Скачиваю установщик версии %1%2...", ВерсияКУстановке, ?(ИспользоватьХ64, "-x64", "")); ПутьКСохраняемомуФайлу = ВременныеФайлы.НовоеИмяФайла("zip"); @@ -103,7 +109,7 @@ Таймаут ); - Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке); + Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке, ИспользоватьХ64); Запрос = Новый HTTPЗапрос(Ресурс); Лог.Отладка("Сервер: %1. Ресурс: %2", Соединение.Сервер, Ресурс); @@ -215,7 +221,7 @@ КонецЕсли; КонецПроцедуры -Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке) +Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке, Знач ИспользоватьХ64) Если СтрРазделить(ВерсияКУстановке, ".").Количество() = ПараметрыOVM.КоличествоРазрядовВНомереВерсии() Тогда КаталогВерсии = СтрЗаменить(ВерсияКУстановке, ".", "_"); @@ -228,11 +234,29 @@ КонецЕсли; ИмяФайла = "zip"; - Ресурс = СтрШаблон("downloads/%1/%2", КаталогВерсии, ИмяФайла); + ЧастиПути = Новый Массив; + ЧастиПути.Добавить("downloads"); + ЧастиПути.Добавить(КаталогВерсии); + Если ИспользоватьХ64 Тогда + ЧастиПути.Добавить("x64"); + КонецЕсли; + ЧастиПути.Добавить(ИмяФайла); + + Ресурс = СтрСоединить(ЧастиПути, "/"); Возврат Ресурс; КонецФункции +Функция ПроверитьВозможностьУстановкиX64(ВерсияКУстановке) + // Версия х64 доступна для версий 1.2.0 и выше + Если НРег(ВерсияКУстановке) = "stable" + Или НРег(ВерсияКУстановке) = "dev" Тогда + Возврат Истина; + Иначе + Возврат СтроковыеФункции.СравнитьВерсии(ВерсияКУстановке, "1.2.0") >= 0; + КонецЕсли; +КонецФункции + СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; diff --git "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" index 55fbdd7..62f3aad 100644 --- "a/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" +++ "b/src/core/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" @@ -43,6 +43,14 @@ Возврат АдресСайтаОСкрипт() + "/downloads"; КонецФункции +// Разрядность текущей операционной системы +// +// Возвращаемое значение: +// Булево - это 64 битная операционна система +Функция Это64БитнаяОперационнаяСистема() Экспорт + Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема; +КонецФункции + // Количество разрядов в номере версии. // В приложении используется версионирование вида 1.0.20 //