Поскольку и по правилам Chocolatey и по правилам 1С, я не имею права публиковать готовые пакеты, расскажу, как эти пакеты создать и настроить внутренний репозиторий.
Пакетная установка chocolatey.
Chocolatey это менеджер пакетов для Windows. Что-то вроде apt-get в Linux. Позволяет ставить и настраивать большое количество ПО одно командой, без скачивания msi и нажатия кнопки Далее >>.
Так же есть возможность создавать собственные пакеты для установки. Воспользуемся этим и создадим пакет для установки 1с.
Зачем?
- Just for funs. Это удобно. Не надо помнить, где лежат архивы с платформой. Скачивать их, распаковывать, проходить мастер установки. Потом надо не забыть прописать путь к hasp ключу и отключить Защиту от опасных действий. Можно конечно написать bat-ник… Но почему бы не попробовать что-то новое.
- Настройка тестового окружения. Мне для поднятия тестового окружения надо поставить несколько программ: git, 7zip, OBS… Удобно ставить их через choco. Почему бы не ставить и платформу через choco.
Необходимое ПО и подготовка.
Первое. Необходимо установить chocolatey. Ставится через командную строку
@"%SystemRoot%System32WindowsPowerShellv1.0powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateyin"
или powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Второе. Потребуется Apache или другой веб-сервер, для публикации дистрибутивов платформы 1с.
Третье. Общая папка для организации репозитория пакетов chocolatey.
Четвертое. Надо перепаковать файл с установкой платформы из windows.rar в setup.zip. Потому что с zip проще работать из командной строки.
Пятое. Готовим файловую структуру. Я использовал следующую схему.
В папке distr потом можно будет хранить файлы установки сервера предприятий, x64 платформу.
Каталог choco я опубликовал через Apache и сделал общедоступным. Таким образом есть доступ как через веб:
и по сети:
Далее все команды буду выполнять в powershell.
Создание пакета.
Создание пакета.
Выбираем папку, где будем работать. Выполняем в этой папке команду
choco new 1c
Таким образом создается шаблон пакета. Сначала отредактируем файл 1c.nuspec. Это файл описания нашего пакета:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id>1c</id>
<version>8.3.7.2008</version>
<title>1c (Install)</title>
<authors>Author</authors>
<projectUrl>https://1c.ru</projectUrl>
<iconUrl>http://1c.ru/static/images/logo.png</iconUrl>
<tags>1c</tags>
<summary></summary>
<description>Установка платформы 1с через choco</description>
</metadata>
<files>
<file src="tools**" target="tools" />
</files>
</package>
Здесь в тегах version указываете версия платформы, которую будет устанавливать пакет.
Теперь надо отредактировать файл chocolateyinstall.ps1 в папке tools.
$ErrorActionPreference = 'Stop'; # stop on all errors
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$url = 'http://MySecretServer/choco/distr/1c/' + $env:ChocolateyPackageVersion + '/setup.zip' # download url, HTTPS preferred
$packageZipArgs = @{
packageName = $env:ChocolateyPackageName
unzipLocation = $toolsDir
#fileType = 'MSI' #only one of these: exe, msi, msu
url = $url
softwareName = '1c*' #part or all of the Display Name as you see it in Programs and Features. It should be enough to be unique
checksum = 'ba520b5d77f8a48f1b7eddb971d560e5d9dc9802b8d0ef572d8ad7d90218766c'
checksumType = 'sha256' #default is md5, can also be sha1, sha256 or sha512
validExitCodes= @(0, 3010, 1641)
}
$packageMSIArgs = @{
packageName = $env:ChocolateyPackageName
fileType = 'MSI' #only one of these: exe, msi, msu
softwareName = '1c*' #part or all of the Display Name as you see it in Programs and Features. It should be enough to be unique
# MSI
file = $toolsDir + '1CEnterprise 8.msi'
silentArgs = "/qr DESIGNERALLCLIENTS=1 THICKCLIENT=1 THINCLIENTFILE=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=0 LANGUAGES=RU"
validExitCodes= @(0, 3010, 1641)
}
$path1cconf = "C:Program Files (x86)1cv8" + $env:ChocolateyPackageVersion + "inconfconf.cfg"
$cmd_break = "/c " + "echo.>>" + """" + $path1cconf + """"
$cmd_unsafe = "/c " + "echo DisableUnsafeActionProtection=.*>>" + """" + $path1cconf + """"
Write-Output "Установка 1с"
Install-ChocolateyZipPackage @packageZipArgs
Install-ChocolateyInstallPackage @packageMSIArgs
Write-Output "Отключаем защиту от опасных действий"
Start-ChocolateyProcessAsAdmin $cmd_break cmd
Start-ChocolateyProcessAsAdmin $cmd_unsafe cmd
В этом файле в надо указать контрольную сумму архива setup.zip в переменную checksum. Можно не указывать, тогда файл будет скачиваться каждый раз.
Что делает этот файл?
- Идет по адресу http://MySecretServer/choco/distr/1c/<Version>/setup.zip
- Cкачивает и распаковывает этот файл.
- Выполняется установка 1с из пакета msi с нужными аргументами, взяты отсюда //infostart.ru/public/296227.
- В файл conf.cfg записываем отключение защиты от опасных действий.
Из-за того, что установка идет через msi файл, не требуется редактировать файл chocolateyuninstall.ps1, в котором описывается удаление пакета.
После этого в каталоге выполняем команду:
choco pack
Если все сделали правильно, в каталоге должен появится файл вида 1c.8.3.7.2008.nupkg. Это файл копируем в \mysecretserverwwwchocopackages
Потратив немного времени, можно собрать пакеты для всех платформ.
![]() |
![]() |
Подключение своего репозитория
Для подключения нового репозитория надо выполнить команду
choco source add -n=platforms1c -s=\MySecretServerwwwchoco1cpackages
Параметр -n задает имя репозитория, -s путь до папки с пакетами.
То, ради чего все это делали.
Теперь платформу 1с можно устанавливать командой
choco install 1c
Если над определенную версию
choco install 1c --version 8.3.7.2008
А удалять:
choco uninstall 1c
choco uninstall 1c --version 8.3.7.2008
Итого.
Да, по сути это тот же bat-ник. Но вызывать его удобнее. И легко использовать в vagrantfile для подготовки тестового окружения. Дальнейшие планы развития: добавить установку x64 платформы и сервера предприятий.
Ссылка на github: https://github.com/KrapivinAndrey/ChocoInstall1c
(0) огонь. уехало по ленте.
Очень нужная публикация! Спасибо! В топ!
(0) чем это лучше обычной шары с файликом ibcommon
(3)
Это не общие базы. Это установка платформы.
(4) я тоже говорю про установку
(5) Хорошо. На этот вопрос я не отвечу. Мне choco нужно для поднятия тестового окружения через vagrant.
Параметр конфигурационного файла (.cfg) DistributiveLocation — содержит указание на каталог, в котором будет производится поиск новой версии для автоматической установки.
Автор, где ты был раньше?? =)
Жирный плюс!
Мне одному кажется, что создать общую шару и положить туда папку с платформой, 1cestart.exe и файлик 1CESCmn.cfg следуюшего содержания
DistributiveLocation=\Mainsrv1cbasesDistr
InstalledLocation=C:Program Files1cv8
InstallComponents=DESIGNERALLCLIENTS=1 THINCLIENTFILE=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=1 LANGUAGES=RU
CommonInfoBases=\Mainsrv1cbasesDistrALL.v8i
UseHWLicenses=1
куда проще чем мудохацца со всем вышенаписанным?
при очередном обновлении просто добавить папку со свежей платформой
раз уж у пользователя права локального админа…
(10)
Все дело в решаемое задаче. Еще раз. Я с этим всем разобрался ради автоматизации развертывания тестового стенда.
У меня ноут с ssd. Место бережно храню и не хочу ставить себе все возможные платформы.
Если при приходит тикет: Ошибка на БУ 3.0….. платформа 8.3.9.1234. То я одной командой ставлю платформу, все проверяю и так же одной командой удаляю.
К чему хочется прийти: «Проверить модуль 1.2.3.4 на БУ 3.0.1.2 платформа 8.3.9.1234» -> готовая виртуальная машина со всеми настройками.
ну если вы разработчик… и у вас ноут со 120 гигами ССД, так добавьте стоимость пары часов 1сника и купите уже на 256, а то стыдно уже на скрепках экономить ))
и поставьте все последние 10 платформ, ибо сожрут они ну 5 гигов от силы… и просто в настройках базы меняйте версию, чем туда-сюда ставить удалять.
(12)
256. Базы же еще) и git репозитории.
Мне для работы нужны все платформы от 8.2.15 до 9.x.x.x(если она выйдет)
хорошая статья, очень понравилось.
У меня только один вопрос — а зачем столько версий платформ? Платформа 8.3.12 поддерживает работу баз 8.3.11, 8.3.10 и так далее.
Для файлового режима — достаточно одной версии.
Защита от опасных действий отключается для всех версий разом в папке C:Program Files1cv8conf
И потом — установленную версию можно просто безболезненно перенести из C:Program Files1cv8 на файловую шару и обратно
Если вопрос «на интерес» — предлагаю сделать скрипт по разворачиванию разных версий 1С в виртуальные машины.
Чтобы например по команде up1c 8.3.12.1234 с удаленного сервера копировался файл виртуальной машины с установленной версией 8.3..12.1234, и запускалась виртуальная машина
(15) см. (11) Установка через choco это просто побочный эффект задачи по автоматизации тестового окружения.
А каков реальный кейс этого инструмента?
Я понимаю внешние репозитории в линукс. Но тут же нужно эту репу самому создать? В чем цимус?
(17)
См. (16). Это побочный эффект решения задачи автоматизации настройки виртуального окружения на Windows.
Самая засада в том, что надо самому-таки качать архив с платформой из личного кабинета.
Нельзя ли сделать так, чтобы чоко ломился не в локальную шару, а на сайт релизов 1С? Так и актуальность платформ не надо будет поддерживать и держать у себя все архивы с платформами.
У серебряной пули было что-то такое (по-моему «в кластере для нищебродов»)
(19) а в чем засада? Имхо из локальной лучше. Мало ли чего там в вебе переделают: авторизацию, ссылки, недоступность сайта опять таки.
(20) Была у меня такая идея: нет платформы — скачать с сайта. Нельзя пользоваться параметром —version, так как он предопределенный.
Но как-то тяжело скачивать платформу с сайта или не доразобрался. Все что на release1c скачивается в rar. Можно скачивать zip через обновление текущей платформы — но там ссылка только на последнюю версию.
за статью респект
choco v0.9.10.1+ использует внутри себя 7z, поэтому не нужно париться с перепаковкой в zip
Supported archive formats are listed at:
поэтому сама идея с логином на сайт релизов выглядит несложной (останется придумать как не протерять логин-пароль в открытом виде)
(21)
Похоже не хватает плагина для 1Script, который будет поднимать (и обновлять) Web-сервер со всей нужной структурой папок и файлов?
(22) я помню, что Лустин как-то делал скачивание платформы с users.v8 вот здесь:
vanessa-nishebrod-cluster
(23) тут скорее докер. но choco плохо шарит пакеты через веб, если это не IIS. Может поднять докер с nano-windows… Жду комментарии на github)
(23) Хотя… WebServer обновлять каждый раз не надо, а вот оскрипт который соберет платформы и пакеты для установки — вполне можно подумать.
(24) Там скрипт был не мой, а стороннего разработчика с gitHub
Что-то я не въехал.
На компе клиента есть групповые политики и через них офигенно все разворачивается.
На компе разработчика, я бы очень осознанно устанавливал платформу.
Просветите меня еще раз. Не понимаю фишку.
(28) Паш ты чего… Это же про автоматическое развертывание софта, применяется для операции подготовки «образов» операционных систем
и вот тебе нужно настроить машину разработчика — виртуалку например и сделать это единообразно. В таком случае у тебя применяется 2 утилиты
* packer — создает образа в формате «для любой» системы виртуализации
* choco — устанавливает нужный софт
Тогда скрипт создания образа будет выглядеть просто
Показать
(29) Старею. Но опять нифига не понял. Чего люди делают???
Что все эти буквы значат?
(30) попробую по другому. В эру виртуализации рулят уже не групповые политики, а образа операционных систем и затем инструменты актуализации софта по компании в зависимости от роли машины
для этого теперь применяются несколько обновленные инструменты
1. создатели ISO образов компании
2. сервера пакетов валидных в компании
3. наблюдатели и обновляторы софта по компании
важно заметить что в компании могут применятся windows и linux машины
В статье описан пункт как сделать «собственный сервер обновлений 1С инсталяторов» и использование его применительно к инструменту обновлятора windows
выше я тебе написал список софта который ставим мы на машину разработчика 1С — одним скриптом.
Нет больше нужны писать инструкцию по скачиванию — достаточно скрипта и описания софта в табличке
(30) могу объяснить еще проще — смотри, например
0. ты хочешь машину разработчика «Как у Лустина»
1. я даю тебе ссылку на скачивание — ты запускаешь скрипт
2. скрипт устанавливает и настраивает тебе Виртуальную машину «Как у Лустина»
3. proffit (ну или красноглазие) — потому что у меня на Windows машине разработчика установлено чуть больше софта чем я тебе написал выше
(30) А еще условно можно сделать
Для Платформа = «8.2.16.ххх» по «8.3.12.xxxx» Цикл
Для Каждого РелизБух = «3.0.9.4» по «3.0.63.22» Цикл
Машина = ПоднятьВиртуальнуюМашину(«Windows10»);
Машина.УстановитьПлатформу(Платформа);
Машина.РазвернутьБазу(РелизБух);
Машина.ВыполнитьТесты();
КонецЦикла
КонецЦикла
Автору большой респект и уважение!
Очень удобное решение не только для автоматизации виртуализации, но и для аутсорсеров (как по ИТ так и по 1С)
Разворачиваешь свой репозиторий. Клиенты все постоянные, т.е. со временем школадка стоять будет у всех.
Зашел, запустил команду — пошел пить чай. дистры скачались и установились.
(13)
Что за адская работа?
(35) Отличная работа на которой можно поэксперементировать.
Разработка универсальной обработки для ОФ и УФ одновременно.
(12) Не обязательно менять версии. Можно просто запускать нужный ярлык 1С и всё нормально (именно так и поступаю). Проблема возникает когда надо производить отладку клиент-серверной базы, но тут отдельная история, которую пока простым способом не знаю как реализовать.
Всем привет!
Немного перепилив скрипт произвожу установку и 1С сервера.
использую команду:
Start-Process msiexec.exe -Wait -ArgumentList ‘/I «1CEnterprise 8.msi» /qr TRANSFORMS=adminstallrelogon.mst;1049.mst DESIGNERALLCLIENTS=1 THICKCLIENT=1 THINCLIENTFILE=1 THINCLIENT=1 WEBSERVEREXT=1 SERVER=1 CONFREPOSSERVER=1 CONVERTER77=0 SERVERCLIENT=1 LANGUAGES=RU’
пользователя .USR1CV8 создаю отдельно до установки
Может кто-то подскажет — как передать пароль для этого пользователя, а то приходится игнорить запуск сервиса и затем руками задавать пароль…
(38), если Вы используете PowerShell, то можете воспользоваться апплетомGet-Credential из модуля Microsoft.PowerShell.Security.
(39) Спасибо, а в установщике 1С есть возможность передачи пароля подобная mssql (через параметр
… /SAPWD -) или каким параметром можно устанавливать сервер , но не создавать службу Агент сервера 1С:Предприятия 8.3 ? Get-Credential — требует ручного ввода пароля…
(40) К сожалению, я такого параметра не нашел. На ИТС так себе документация по параметрам. Самая полная — здесь же, на Инфостарте.