1

Тема: CMD/BAT: MongoDB, установка с bat-файла

Автоматизировал установку MongoDB в bat-файле. Вплоть до скачивания, различных проверок и установки как службы.
Все работает... Но хотелось бы добавить поиск на сайте актуальной последней версии и ее установку, а не конкретно указанной в файле, т.к ссылки на скачивание приходится прописывать вручную.
И, соответственно, вопрос, если кто сможет помочь:
Как с батника обратиться на сайт монго, проверить последнюю версию и именно ее загрузить или предоставить выбор?
Заранее спасибо тем, кто не пройдет мимо и хоть как-то поможет или посоветует!
Код:

+ открыть спойлер

::::::::::::::::::::
::::: СИСТЕМА ::::::
::::::::::::::::::::

::Определяем битность системы и создаем переменную
ECHO OFF
set xOS=x32
set zOS=
if DEFINED ProgramFiles(x86) set xOS=x64
if DEFINED ProgramFiles(x86) set zOS=64

::::::::::::::::::::
::: MONGODB 2.6 ::::
::::::::::::::::::::
set mongodb1=mongodb-win32-i386-2.6.0
set mongodb2=mongodb-win32-x86_64-2008plus-2.6.0
set mongodb3=mongodb-win32-x86_64-2.6.0
::Проверяем есть ли скачанные файлы
IF EXIST %mongodb1%.zip 
    (
    set mongoversion=%mongodb1%
    unzip -l "%mongoversion%.zip"
    ) ELSE 
        (
        IF EXIST %mongodb2%.zip 
            (
            set mongoversion=%mongodb2%
            unzip -l "%mongoversion%.zip"
            ) ELSE 
                (
                IF EXIST %mongodb3%.zip 
                    (
                    set mongoversion=%mongodb3%
                    unzip -l "%mongoversion%.zip"
                    ) ELSE 
                        ( 
                        ::Скачиваем дистрибутив в соответствии с битностью системы
                        choice /c 1230 /M "1 - mongodb-i386-2.6.0, 2 - mongodb-x86_64-2008plus-2.6.0., 3 - mongodb-x86_64-2.6.0, 0 - None"
                        IF ERRORLEVEL 1 SET urlmongo=mongodb-win32-i386-2.6.0
                        IF ERRORLEVEL 2 SET urlmongo=mongodb-win32-x86_64-2008plus-2.6.0
                        IF ERRORLEVEL 3 SET urlmongo=mongodb-win32-x86_64-2.6.0
                        IF ERRORLEVEL 4 SET urlmongo=None
                        curl -f -# -O  -k https://fastdl.mongodb.org/win32/%urlmongo%.zip
                        ::Распаковываем дистрибутив
                        unzip -l "%urlmongo%.zip"
                        )
                )
        )

::Объявляем переменную
set mongodb=d:\server\mongodb
::Создаём каталоги
mkdir %mongodb%\2.6-database >nul 2>nul
mkdir %mongodb%\2.6-server >nul 2>nul
mkdir %mongodb%\2.6-log >nul 2>nul
mkdir %mongodb%\2.6-config >nul 2>nul
::Создаем файл конфигов с указанием папки логов, папки хранения данных и смены порта 27017 по умолчанию на 3333
echo logpath=d:\server\mongodb\2.6-log\mongod.log> "%mongodb%\2.6-config\mongod.cfg"
echo dbpath=d:\server\mongodb\2.6-database>> "%mongodb%\2.6-config\mongod.cfg"
echo port=6666>> "d:\server\mongodb\2.6-config\mongod.cfg"
::Копируем файлы
copy %mongoversion%\bin %mongodb%\2.6-server\
::Инсталлируем
%mongodb%\2.6-server\mongod.exe --config %mongodb%\2.6-config\mongod.cfg --install
::Создаем службу с именем MongoDB
sc.exe create MongoDB-%xOS% binPath= "\"%mongodb%\2.6-server\mongod.exe\" --service --config=\"%mongodb%\2.6-config\mongod.cfg\"" DisplayName= "MongoDB-%xOS% (%mongoversion%)" start= "auto"
::Запускаем службу
net start MongoDB-%xOS%

Код не итоговый, так что не судите строго. Я в этом не силен (... Постепенно приведу в хороший вид и состояние... Для меня главное, что работает)))
Используемые сторонние программы: curl.exe и unzip.exe

2 (изменено: hvs, 2014-05-09 14:36:19)

Re: CMD/BAT: MongoDB, установка с bat-файла

Хм... А почему не хотите использовать значение переменной %PROCESSOR_ARCHITECTURE%?
Только из-за того, что в имени файлов инсталляторов используется связка "x86_64", а не "AMD64"? Та не покзатеь, что в новых версиях такой формат сохранится...

Да и способ проверки упростится, получится что вроде такого:


if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" (set xOS=64 & zOS=x64)

Да и используются потом эта переменная (xOS) только для создания имени службы, а переменная zOS вообще больше не используется. Или же они требуются для корректной работы инсталлятора? Или эти переменные требуются для корректной работы MongoDB?