IE 2018

"Шоколадная" установка 1С

Администрирование - Системное

Установка 1с пакет choco vagrant

95
Статья о том, как быстро установить и настроить платформу 1С через одну команду: choco install 1c.

Поскольку и по правилам Chocolatey и по правилам 1С, я не имею права публиковать готовые пакеты, расскажу, как эти пакеты создать и настроить внутренний репозиторий.

Пакетная установка chocolatey.

Chocolatey это менеджер пакетов для Windows. Что-то вроде apt-get в Linux. Позволяет ставить и настраивать большое количество ПО одно командой, без скачивания msi и нажатия кнопки Далее >>.

Так же есть возможность создавать собственные пакеты для установки. Воспользуемся этим и создадим пакет для установки 1с.

Зачем?

  1. Just for funs. Это удобно. Не надо помнить, где лежат архивы с платформой. Скачивать их, распаковывать, проходить мастер установки. Потом надо не забыть прописать путь к hasp ключу и отключить Защиту от опасных действий. Можно конечно написать bat-ник… Но почему бы не попробовать что-то новое.
  2. Настройка тестового окружения. Мне для поднятия тестового окружения надо поставить несколько программ: git, 7zip, OBS… Удобно ставить их через choco. Почему бы не ставить и платформу через choco.

Необходимое ПО и подготовка.

Первое. Необходимо установить chocolatey. Ставится через командную строку

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

или 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 и сделал общедоступным. Таким образом есть доступ как через веб:

http://mysecrectserver/choco

и по сети:

\\mysecretserver\www\choco

 

Далее все команды буду выполнять в 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 + "\bin\conf\conf.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. Это файл копируем в \\mysecretserver\www\choco\packages

Потратив немного времени, можно собрать пакеты для всех платформ.

Подключение своего репозитория

Для подключения нового репозитория надо выполнить команду

choco source add -n=platforms1c -s=\\MySecretServer\www\choco\1c\packages

Параметр -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

95

Скачать файлы

Наименование Файл Версия Размер
"Шоколадная" установка 1с:
.zip 11,17Kb
06.08.18
1
.zip 11,17Kb 1 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. lustin 984 27.06.18 10:12 Сейчас в теме
(0) огонь. уехало по ленте.
maxopik2; paybaseme; olegtymko; АлександрЯрославичъ; baton_pk; +5 Ответить
2. kraynev-navi 374 27.06.18 10:31 Сейчас в теме
Очень нужная публикация! Спасибо! В топ!
maxopik2; +1 Ответить
3. pm74 127 27.06.18 10:38 Сейчас в теме
(0) чем это лучше обычной шары с файликом ibcommon
blackhole321; kauksi; +2 Ответить
4. Scorpion4eg 101 27.06.18 10:41 Сейчас в теме
(3)
ibcommon

Это не общие базы. Это установка платформы.
5. pm74 127 27.06.18 10:46 Сейчас в теме
(4) я тоже говорю про установку
6. Scorpion4eg 101 27.06.18 10:50 Сейчас в теме
(5) Хорошо. На этот вопрос я не отвечу. Мне choco нужно для поднятия тестового окружения через vagrant.
7. SlavaKron 27.06.18 11:19 Сейчас в теме
Параметр конфигурационного файла (.cfg) DistributiveLocation - содержит указание на каталог, в котором будет производится поиск новой версии для автоматической установки.
8. olegtymko 123 27.06.18 11:30 Сейчас в теме
Автор, где ты был раньше?? =)
Жирный плюс!
maxopik2; +1 Ответить
9. kauksi 204 27.06.18 12:44 Сейчас в теме
Мне одному кажется, что создать общую шару и положить туда папку с платформой, 1cestart.exe и файлик 1CESCmn.cfg следуюшего содержания

DistributiveLocation=\\Mainsrv\1cbases\Distr
InstalledLocation=C:\Program Files\1cv8
InstallComponents=DESIGNERALLCLIENTS=1 THINCLIENTFILE=1 THINCLIENT=1 WEBSERVEREXT=0 SERVER=0 CONFREPOSSERVER=0 CONVERTER77=0 SERVERCLIENT=1 LANGUAGES=RU
CommonInfoBases=\\Mainsrv\1cbases\Distr\ALL.v8i
UseHWLicenses=1

куда проще чем мудохацца со всем вышенаписанным?
при очередном обновлении просто добавить папку со свежей платформой
Bryuhanov; pavel06; Silenser; collider; user747571; jONES1979; 🅵🅾️🆇; +7 Ответить
10. kauksi 204 27.06.18 12:46 Сейчас в теме
раз уж у пользователя права локального админа...
11. Scorpion4eg 101 27.06.18 13:06 Сейчас в теме
(10)
раз уж у пользователя права локального админа...

Все дело в решаемое задаче. Еще раз. Я с этим всем разобрался ради автоматизации развертывания тестового стенда.

У меня ноут с ssd. Место бережно храню и не хочу ставить себе все возможные платформы.
Если при приходит тикет: Ошибка на БУ 3.0..... платформа 8.3.9.1234. То я одной командой ставлю платформу, все проверяю и так же одной командой удаляю.

К чему хочется прийти: "Проверить модуль 1.2.3.4 на БУ 3.0.1.2 платформа 8.3.9.1234" -> готовая виртуальная машина со всеми настройками.
12. kauksi 204 27.06.18 13:20 Сейчас в теме
ну если вы разработчик... и у вас ноут со 120 гигами ССД, так добавьте стоимость пары часов 1сника и купите уже на 256, а то стыдно уже на скрепках экономить ))
и поставьте все последние 10 платформ, ибо сожрут они ну 5 гигов от силы... и просто в настройках базы меняйте версию, чем туда-сюда ставить удалять.
pavel06; Ali1976; davydoff; Dimkasan; Fox-trot; 79123890854; user747571; blackhole321; +8 Ответить
13. Scorpion4eg 101 27.06.18 13:36 Сейчас в теме
(12)
и у вас ноут со 120 гигами ССД,


256. Базы же еще) и git репозитории.

Мне для работы нужны все платформы от 8.2.15 до 9.x.x.x(если она выйдет)
35. Gureev 06.08.18 13:28 Сейчас в теме
(13)
Мне для работы нужны все платформы от 8.2.15 до 9.x.x.x(если она выйдет)

Что за адская работа?
36. Scorpion4eg 101 06.08.18 19:58 Сейчас в теме
(35) Отличная работа на которой можно поэксперементировать.
Разработка универсальной обработки для ОФ и УФ одновременно.
37. strange2007 131 10.08.18 06:58 Сейчас в теме
(12) Не обязательно менять версии. Можно просто запускать нужный ярлык 1С и всё нормально (именно так и поступаю). Проблема возникает когда надо производить отладку клиент-серверной базы, но тут отдельная история, которую пока простым способом не знаю как реализовать.
14. GlebBR 27.06.18 13:51 Сейчас в теме
хорошая статья, очень понравилось.
15. fotov 182 27.06.18 15:58 Сейчас в теме
У меня только один вопрос - а зачем столько версий платформ? Платформа 8.3.12 поддерживает работу баз 8.3.11, 8.3.10 и так далее.
Для файлового режима - достаточно одной версии.
Защита от опасных действий отключается для всех версий разом в папке C:\Program Files\1cv8\conf
И потом - установленную версию можно просто безболезненно перенести из C:\Program Files\1cv8\ на файловую шару и обратно

Если вопрос "на интерес" - предлагаю сделать скрипт по разворачиванию разных версий 1С в виртуальные машины.
Чтобы например по команде up1c 8.3.12.1234 с удаленного сервера копировался файл виртуальной машины с установленной версией 8.3..12.1234, и запускалась виртуальная машина
16. Scorpion4eg 101 27.06.18 16:03 Сейчас в теме
(15) см. (11) Установка через choco это просто побочный эффект задачи по автоматизации тестового окружения.
17. acsent 1077 27.06.18 20:02 Сейчас в теме
А каков реальный кейс этого инструмента?
Я понимаю внешние репозитории в линукс. Но тут же нужно эту репу самому создать? В чем цимус?
18. Scorpion4eg 101 27.06.18 20:30 Сейчас в теме
(17)
А каков реальный кейс этого инструмента?

См. (16). Это побочный эффект решения задачи автоматизации настройки виртуального окружения на Windows.
19. JohnyDeath 291 28.06.18 08:02 Сейчас в теме
Самая засада в том, что надо самому-таки качать архив с платформой из личного кабинета.
Нельзя ли сделать так, чтобы чоко ломился не в локальную шару, а на сайт релизов 1С? Так и актуальность платформ не надо будет поддерживать и держать у себя все архивы с платформами.
У серебряной пули было что-то такое (по-моему "в кластере для нищебродов")
20. kraynev-navi 374 28.06.18 09:39 Сейчас в теме
(19) а в чем засада? Имхо из локальной лучше. Мало ли чего там в вебе переделают: авторизацию, ссылки, недоступность сайта опять таки.
21. Scorpion4eg 101 28.06.18 09:47 Сейчас в теме
(20) Была у меня такая идея: нет платформы - скачать с сайта. Нельзя пользоваться параметром --version, так как он предопределенный.
Но как-то тяжело скачивать платформу с сайта или не доразобрался. Все что на release1c скачивается в rar. Можно скачивать zip через обновление текущей платформы - но там ссылка только на последнюю версию.
22. asdf_88 28.06.18 13:03 Сейчас в теме
за статью респект

choco v0.9.10.1+ использует внутри себя 7z, поэтому не нужно париться с перепаковкой в zip

This unzips files using the 7-zip command line tool 7z.exe.
Supported archive formats are listed at:
https://sevenzip.osdn.jp/chm/general/formats.htm

исходник

поэтому сама идея с логином на сайт релизов выглядит несложной (останется придумать как не протерять логин-пароль в открытом виде)
(21)
24. AntonSm 28.06.18 14:10 Сейчас в теме
(22) я помню, что Лустин как-то делал скачивание платформы с users.v8 вот здесь:
vanessa-nishebrod-cluster
27. lustin 984 29.06.18 01:36 Сейчас в теме
(24) Там скрипт был не мой, а стороннего разработчика с gitHub
23. asdf_88 28.06.18 13:10 Сейчас в теме
Похоже не хватает плагина для 1Script, который будет поднимать (и обновлять) Web-сервер со всей нужной структурой папок и файлов?
SerebanSK; +1 Ответить
25. Scorpion4eg 101 28.06.18 14:56 Сейчас в теме
(23) тут скорее докер. но choco плохо шарит пакеты через веб, если это не IIS. Может поднять докер с nano-windows... Жду комментарии на github)
26. Scorpion4eg 101 28.06.18 15:55 Сейчас в теме
(23) Хотя... WebServer обновлять каждый раз не надо, а вот оскрипт который соберет платформы и пакеты для установки - вполне можно подумать.
28. GROOVY 2404 29.06.18 20:44 Сейчас в теме
Что-то я не въехал.

На компе клиента есть групповые политики и через них офигенно все разворачивается.
На компе разработчика, я бы очень осознанно устанавливал платформу.

Просветите меня еще раз. Не понимаю фишку.
29. lustin 984 30.06.18 10:02 Сейчас в теме
(28) Паш ты чего... Это же про автоматическое развертывание софта, применяется для операции подготовки "образов" операционных систем

и вот тебе нужно настроить машину разработчика - виртуалку например и сделать это единообразно. В таком случае у тебя применяется 2 утилиты

* packer - создает образа в формате "для любой" системы виртуализации
* choco - устанавливает нужный софт

Тогда скрипт создания образа будет выглядеть просто

choco install msgit
choco install jdk
choco install vscode
choco install 1C-Krapivin-Infostart
choco install oscript 
choco install wget
choco install curl
choco install soapui
choco install gitkraken
choco install imagemagick
Показать
Scorpion4eg; +1 Ответить
30. GROOVY 2404 30.06.18 13:54 Сейчас в теме
(29) Старею. Но опять нифига не понял. Чего люди делают???
Что все эти буквы значат?
Silverbulleters; +1 Ответить
31. lustin 984 30.06.18 23:39 Сейчас в теме
(30) попробую по другому. В эру виртуализации рулят уже не групповые политики, а образа операционных систем и затем инструменты актуализации софта по компании в зависимости от роли машины

для этого теперь применяются несколько обновленные инструменты

1. создатели ISO образов компании
2. сервера пакетов валидных в компании
3. наблюдатели и обновляторы софта по компании

важно заметить что в компании могут применятся windows и linux машины

В статье описан пункт как сделать "собственный сервер обновлений 1С инсталяторов" и использование его применительно к инструменту обновлятора windows

выше я тебе написал список софта который ставим мы на машину разработчика 1С - одним скриптом.
Нет больше нужны писать инструкцию по скачиванию - достаточно скрипта и описания софта в табличке
32. lustin 984 01.07.18 00:28 Сейчас в теме
(30) могу объяснить еще проще - смотри, например

0. ты хочешь машину разработчика "Как у Лустина"
1. я даю тебе ссылку на скачивание - ты запускаешь скрипт
2. скрипт устанавливает и настраивает тебе Виртуальную машину "Как у Лустина"
3. proffit (ну или красноглазие) - потому что у меня на Windows машине разработчика установлено чуть больше софта чем я тебе написал выше
33. Scorpion4eg 101 04.07.18 15:31 Сейчас в теме
(30) А еще условно можно сделать
Для Платформа = "8.2.16.ххх" по "8.3.12.xxxx" Цикл
Для Каждого РелизБух = "3.0.9.4" по "3.0.63.22" Цикл
Машина = ПоднятьВиртуальнуюМашину("Windows10");
Машина.УстановитьПлатформу(Платформа);
Машина.РазвернутьБазу(РелизБух);
Машина.ВыполнитьТесты();
КонецЦикла
КонецЦикла
34. anemov 30.07.18 18:56 Сейчас в теме
Автору большой респект и уважение!
Очень удобное решение не только для автоматизации виртуализации, но и для аутсорсеров (как по ИТ так и по 1С)
Разворачиваешь свой репозиторий. Клиенты все постоянные, т.е. со временем школадка стоять будет у всех.
Зашел, запустил команду - пошел пить чай. дистры скачались и установились.
38. serge_focus 4 04.09.18 09:38 Сейчас в теме
Всем привет!
Немного перепилив скрипт произвожу установку и 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 создаю отдельно до установки
Может кто-то подскажет - как передать пароль для этого пользователя, а то приходится игнорить запуск сервиса и затем руками задавать пароль...
39. user708180_baranov 12.09.18 09:29 Сейчас в теме
(38), если Вы используете PowerShell, то можете воспользоваться апплетом Get-Credential из модуля Microsoft.PowerShell.Security.
Оставьте свое сообщение