Автоматизация установки софта на чистую windows

Наверное вы задавались вопросом, а можно ли упростить себе переустановку системы.
Конечно вы подразумеваете что переустановка Windows включает установку драйверов и нужного ПО. Office, Браузер и так далее.

Программа называется Silent Install Helper. Ссылка на sourceforge программы: sourceforge.net/projects/sih

Программа скачивается и запускается без установки.

Главное окно программы:

image

Эта программа обладает огромными возможностями для автоматизации установки.
Программа может создать скрипт для авто установки софта.

И так же установить весь софт прямо из программы.

Нам нужно создать скрипт для установки.

В Menu Bar в интерфейсе нам нужно выбрать пункт Installer.

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

И после добавление всех установщиков нажимаем на галочку возле каждого инсталлятора.

И потом нажимаем пункт Tools нажимаем пункт Create *.cmd file.

Программа про анализирует установщик и создаст скрипт или запустит установку.

И сохраняем этот файл куда-то.

Программа создаст файл с примерно таким контентом:

pause
C:\Users\CtoZaPizdec\Downloads\VSCodeUserSetup-x64-1.51.0.exe
C:\Users\CtoZaPizdec\Documents\Microsoft Office 2007 Standard SP3 12.0.6734.5000 RePack by KpoJIuK.v2015.10.exe -y
C:\Users\CtoZaPizdec\Documents\PaperASMCV1000.exe /SILENT /SUPPRESSMSGBOXES /NORESTART /SP-
pause

Программа проанализирует инсталлятор и создаст скрипт для тихой установки программ если это возможно.

Вы тут: Главная Windows Автоустановка приложений с winget по окончании установки Windows

WinGet — замечательное средство автоматической установки приложений. Не надо тратить время на скачивание актуальных инсталляторов и забивать себе голову тонкостями ключей тихой установки. Просто запускаешь скрипт с подборкой своих программ и готово!

Но есть нюанс © Установщик пакетов не входит в поставку Windows! Это не вполне очевидно, потому что winget «сразу» работает в начисто установленной ОС. Однако он не включен в WIM-образ, а скачивается уже по окончании установки системы с помощью магазина Windows. И временной интервал загрузки варьируется. Поэтому нельзя просто взять и прицепить скрипт установки приложений к установке Windows.

Сегодня я расскажу, как автоматизировать процесс загрузки и регистрации winget, когда его нет в Windows.

[+] Сегодня в программе

Ручной способ

Детали могут варьироваться в зависимости от издания Windows. Для самого сложного расклада способ изложен в документации Windows IoT: Using WinGet to Install Apps on Windows IoT Enterprise. В этом издании нет магазина, поэтому требуется ручная загрузка всех компонентов.

Метод также подходит для издания LTSC, поскольку оно идентично IoT. Наконец, он должен сработать и в серверных системах, для которых winget в принципе не позиционируется (читатель Alexandr Petnitsky подтверждает успешную работу скрипта в Windows Server 2022).

Автоматический способ (скрипт)

Я просто автоматизировал ручные шаги по загрузке и установке всего необходимого.

Скачайте скрипт winget-install.zip, разблокируйте его, потом выполняйте от имени администратора.

Для работы winget нужен он сам – это установщик пакетов Microsoft.DesktopAppInstaller, а также Microsoft.VCLibs.x64 и Microsoft.UI.Xaml.2.8. Еще понадобится файл лицензии, который можно скачать из любого релиза winget.

# doc https://learn.microsoft.com/en-us/windows/iot/iot-enterprise/deployment/install-winget-windows-iot
# blog https://www.outsidethebox.ms/22409

$ErrorActionPreference = 'SilentlyContinue'
$ProgressPreference = 'SilentlyContinue'

$AppInstaller = 'Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle'
$VCLibs = 'Microsoft.VCLibs.x64.14.00.Desktop.appx'
$Xaml = 'Microsoft.UI.Xaml.2.8.x64.appx'
$components = @($VCLibs, $Xaml, $AppInstaller)
$license = '5e4a105df01840b0bbf00985e4f57c1e_License1.xml' #from v1.7.10582 assets

Write-Host "Downloading winget and dependencies..."
Invoke-WebRequest -Uri https://aka.ms/getwinget -OutFile .\$AppInstaller
Invoke-WebRequest -Uri https://aka.ms/$($VCLibs) -OutFile .\$VCLibs
Invoke-WebRequest -Uri https://github.com/microsoft/microsoft-ui-xaml/releases/download/v2.8.6/$($Xaml ) -OutFile .\$Xaml 
(Invoke-RestMethod -Uri https://github.com/microsoft/winget-cli/releases/download/v1.7.10582/$($license)).OuterXML | Out-File $license

Write-Host "Installing winget..."
# Deploy provisional package for all users
Add-AppxProvisionedPackage -Online -PackagePath .\$($AppInstaller) -LicensePath .\$($license)
Remove-Item -Path .\$($license) -Force

$components  | ForEach-Object {
    # Install downloaded packages...
    Add-AppxPackage -Path .\$($_) -ErrorAction 0
    # ... and delete them
    Remove-Item -Path .\$($_) -Force
}

# if anything went wrong, check out errors
if ($ERROR) {$ERROR | Out-File -FilePath $env:temp\winget-install.log -Append}

Ничего принципиально нового здесь нет. Invoke-WebRequest я показывал в блоге неоднократно (раз, два). Invoke-RestMethod вроде не фигурировал раньше, но смысл тот же (просто скачиваемый файл — XML). Установку скачанных пакетов с помощью Add-AppxPackage я тоже разбирал.

После этого уже можно устанавливать приложения с помощью winget. Например, надергав команд с winget.run или winstall, вы получите что-то вроде:

winget install --id=M2Team.NanaZip -e
winget install --id=Notepad++.Notepad++ -e 
winget install --id=Ghisler.TotalCommander -e 
winget install --id=DominikReichl.KeePass -e

Однако все эти сайты используют в качестве источника только репозиторий winget. У некоторых программ я предпочитаю магазинную версию (репо msstore) из-за ее автоматического обновления.

Поэтому в моем примере смешанная подборка (NanaZip из магазина). Поскольку у магазинных приложений идентификаторы не предназначены для человеческого восприятия, я сделал хэш-таблицу, чтобы видеть названия приложений.

# Software installation 
Start-Sleep -Seconds 10 #before installing software
Write-Host "Installing apps with winget..."
[hashtable]$apps = @{
    "NanaZip" = "9N8G7TSCL18R"
    "Notepad++" = "Notepad++.Notepad++"
    "Total Commander" = "Ghisler.TotalCommander"
    "KeePass" = "DominikReichl.KeePass"
}

foreach ($key in $apps.keys) {
    winget install --id $($apps[$key]) -e --accept-package-agreements --accept-source-agreements
}

Процесс выглядит так.

winget unattend

Осталась сущая мелочь — прицепить запуск скрипта к установке системы. Как обычно, выбор между FirstLogonCommands в файле ответов и setupcomplete.cmd.

Здесь нужно учитывать, что по умолчанию некоторые пакеты устанавливают приложения в профиль – например, утилиты Sysinternals. Файл setupcomplete.cmd выполняется от имени учетной записи SYSTEM. В ее профиле такие программы и окажутся, что будет бесполезно для вас.

FirstLogonCommands срабатывают уже после входа в систему, поэтому такой проблеме не подвержены.

<FirstLogonCommands>
    <SynchronousCommand wcm:action="add">
    <CommandLine>powershell -command "(Get-Volume).DriveLetter | Foreach-Object {if (Test-Path "${PSItem}:\winget-install.ps1") {powershell -ex bypass -file ${PSItem}:\winget-install.ps1}}"</CommandLine>
    <Description>Install winget</Description>
    <Order>1</Order>
    </SynchronousCommand>
</FirstLogonCommands>    

Этот способ вызова скрипта я уже неоднократно показывал в блоге. Сам скрипт выступает в роли маркерного файла — находим его в корне установочного диска и запускаем.

Бонус: быстрая установка своего набора программ на чистой системе

Спустя некоторое время я опубликовал в канале Telegram пост о том, как автоматизировать создание списка любимых приложений для их быстрой установки.

Заключение

Будь у нас winget 20 лет назад, форум про автоустановку приложений не имел бы особого смысла. Да, сторонние менеджеры пакетов вроде Chocolatey далеко не вчера родились. Но ценность и популярность winget обусловлена его наличием «из коробки». Ну, почти :) Надеюсь, со временем он полноценно войдет в состав Windows.

Устанавливать привычные приложения после переустановки Windows или на новом компьютере по одному не всегда удобно. При желании процесс можно автоматизировать и сделать так, чтобы нужное бесплатное ПО скачивалось и устанавливалось автоматически.

В этой инструкции подробно о способах установки сразу нескольких программ в Windows и дополнительная информация, которая может быть полезной.

Winget

Winget — встроенный менеджер пакетов (подробнее о базовом использовании — в этой статье), доступный в Windows 11 и Windows 10, позволяющий скачивать и устанавливать программы и приложения Microsoft Store в интерфейсе командной строки, в том числе сразу несколько приложений.

Пример использования winget для установки нескольких программ одновременно:

  1. Запустите Терминал Windows или Windows PowerShell от имени администратора, сделать это можно в контекстном меню командной строки.
  2. Выполните поиск нужных приложений с помощью команды (вместо имени приложения можно использовать его часть)
    winget search имя_приложения

    и обратите внимание на ИД нужных приложений (скопируйте их куда-либо).

    Поиск приложений в Winget

  3. Для установки сразу нескольких приложений по их ИД используйте команду
    winget install --id=ИД_ПРИЛОЖЕНИЯ1 -e -h ; winget install --id=ИД_ПРИЛОЖЕНИЯ2 -e -h

    указывая нужные приложения (в примере — лишь два, но может быть больше, разделенных знаком «;»).

    Установка нескольких программ в Winget

  4. Дождитесь завершения скачивания и установки выбранных приложений.

Команду из 3-го шага можно сохранить для использования в дальнейшем на этом или других компьютерах, чтобы не выполнять поиск приложений повторно.

Dev Home (Домашняя версия для разработчиков)

Ранее на сайте рассматривалось приложение Dev Home в контексте добавления виджетов использования ресурсов компьютера в Windows 11. С помощью этого же приложения от Microsoft можно автоматизировать установку программ:

  1. Загрузите приложение Dev Home из Microsoft Store (оно может быть уже установлено в Windows 11).
  2. Запустите приложение, перейдите в раздел Конфигурация компьютера — Установка приложений.
    Установка приложений в Dev Home

  3. Выполните поиск нужных приложений, нажимая «+» для добавления в список установки.
    Добавление программ в Dev Home

  4. Нажмите кнопку «Далее», примите условия лицензии и нажмите кнопку «Настроить» для установки выбранных приложений.
    Установка нескольких программ в Dev Home

Останется лишь дождаться скачивания и установки требуемых программ.

Winstall

Winstall — онлайн-сервис для поиска приложений и генерации скрипта для их автоматической установки с помощью winget.

Порядок использования:

  1. Зайдите на сайт https://winstall.app/ и найдите нужные приложения, нажимая «+» для их добавления.
    Добавление приложений в Winstall

  2. Добавив нужные приложения, нажмите кнопку «Generate script».
  3. Выберите тип скрипта и либо скопируйте его в буфер обмена для вставки в командной строке или PowerShell, либо скачайте файл скрипта для запуска и автоматической установки выбранных программ.
    Получить скрипт в Winstall

  4. Запустите готовый скрипт для установки приложений.

В отдельной статье — подробно про использование Winstall.

Ninite

Ninite, возможно, самый простой способ создания пакета для установки набора программ. Всё, что требуется для использования — зайти на сайт https://ninite.com/ и отметить нужные приложения:

Установка нескольких программ в Ninite

После этого нажать кнопку «Get Your Ninite» чтобы скачать установщик, который автоматически загрузит и установит все выбранные программы на вашем компьютере, при этом не установив ничего лишнего, даже если официальный установщик пробует это сделать.

Подробнее о сервисе Ninite — в этом материале.

Надеюсь, информация была полезной, а если вы знаете другие возможности реализации описанного, буду рад вашему комментарию ниже.

QuickInstallApp

QuickInstallApp — это удобное и простое приложение для автоматизации установки программного обеспечения на Windows. Оно предназначено для ускорения процесса настройки нового компьютера или виртуальной машины, позволяя вам загружать и устанавливать нужные программы с минимальными усилиями.


🎯 Особенности

  • Автоматическая загрузка и установка: Просто укажите программы, и приложение загрузит их из сети и установит автоматически.
  • Гибкая настройка параметров: Поддержка пользовательских аргументов для установки (например, режимы тихой установки).
  • Поддержка нескольких архитектур: Определение и выбор версии приложения в зависимости от архитектуры системы (x86/x64).
  • Удобный интерфейс: Графический интерфейс с прозрачным наложением, реализованный на базе ClickableTransparentOverlay и ImGui.
  • JSON-хранилище данных: Легко добавляйте новые программы или изменяйте параметры загрузки с помощью простых JSON-файлов.
  • Управление тегами: Категоризация приложений с помощью тегов для упрощения поиска и выбора.
  • Обратная связь по прогрессу: Удобное отображение прогресса загрузки и установки в реальном времени.

🚀 Как использовать

  1. Скачайте и установите приложение:

    • Клонируйте репозиторий, используя команду:
      git clone https://github.com/Rianvy/QuickInstallApp.git
    • Откройте проект в Visual Studio или любом другом подходящем IDE для работы с C#.
    • Выполните сборку проекта, следуя стандартным инструкциям вашей IDE.
  2. Создайте JSON-файл с конфигурацией программ:

    • Для упрощения процесса создания конфигурации воспользуйтесь онлайн-генератором JSON-файлов:
      Генератор JSON для QuickInstallApp.
    • Укажите информацию о необходимых программах, включая их название, URL-адреса для загрузки и дополнительные параметры установки.
  3. Разместите JSON-файл в нужной папке:

    • Сохраните сгенерированный JSON-файл с именем programs.json.
    • Переместите файл в корневую директорию собранного приложения (где находится исполняемый файл).
    • Пример структуры json:
      {
      "Name": "Example Program",
      "Architectures": {
       "x86": "https://example.com/program32.exe",
       "x64": "https://example.com/program64.exe"
      },
      "Arguments": "/silent",
      "Tags": ["utilities", "tools"]
      }
  4. Запустите приложение:

    • Откройте собранное приложение.
    • В интерфейсе выберите нужные программы для установки.
    • Нажмите кнопку для начала процесса загрузки и установки.
    • Следите за прогрессом в реальном времени.

📂 Структура проекта

  • Downloader.cs: Компонент для загрузки файлов с отслеживанием прогресса.
  • Installer.cs: Логика для автоматической установки программ с аргументами командной строки.
  • ProgramInfo.cs: Модель данных для хранения информации о программах.
  • ProgramManager.cs: Основной менеджер, отвечающий за обработку списка программ.
  • UIManager.cs: Класс, отвечающий за управление пользовательским интерфейсом, включая отображение списка программ, выбор параметров установки и прогресса выполнения.
  • Program.cs: Точка входа в приложение, где инициализируется интерфейс и запускаются основные процессы.
  • programs.json: Файл конфигурации для добавления/редактирования приложений, содержащий данные о доступных программах, их архитектурах и параметрах установки.

🛠️ Технологии

  • Язык: C#
  • Фреймворк: .NET 8.0 для высокой производительности и современных возможностей разработки.
  • Интерфейс:
    • ClickableTransparentOverlay версии 11.0.1 для создания удобного прозрачного наложения.
    • ImGui для построения минималистичного и быстрого пользовательского интерфейса.
  • Формат хранения данных: JSON, обработка которого выполняется с помощью библиотеки Newtonsoft.Json версии 13.0.3.
  • HTTP-запросы: HttpClient, предоставляющий надёжный механизм взаимодействия с веб-ресурсами.

📜 Планы на будущее

  • Поддержка установки через ZIP или MSI
  • Поддержка уведомлений
  • Логи и отчет о действиях
  • Автообновление программы
  • Улучшить обработку ошибок

🤝 Вклад в проект

Мы приветствуем ваши идеи и предложения! Если у вас есть улучшения, создайте pull request или откройте issue.


📄 Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. LICENSE.


QuickInstallApp — ваш лучший помощник в настройке Windows!

Просмотры: 1 688

Необходимо было автоматизировать установку типовых программ на компьютеры пользователей, дабы не развлекаться при установке нового компьютера, поиском, скачиванием и кликами в установщике. Рассматривал различные варианты, от различных программных автоустановщиков, до модификации установщика операционной системы. Остановился на Chocolatey.

Возможно устанавливать и обновлять программы с помощью встроенного в Windows 10 и старше, менеджера пакетов.

Скрипты “авто” установки

Скрипты были сделаны на скорую руку, если знаете сделать как лучше, обязательно напишите об этом в комментариях!

Создаём .bat файл с любым названием, в моём случае “Start_install”, и следуюим содержанием:

powershell -executionpolicy RemoteSigned -file "C:\Users\ИМЯ ВАШЕГО пользователя"\Desktop\Auto_install.ps1"

Данный файл будет выполнять следующее:
1. Разрешит выполнение нашего скрипта, по умолчанию в системе они заблокированы (Restricted)
2. Запустит второй скрипт уже с установкой Chocolatey и выбранными программами для установки на компьютере.
Не забудьте изменить путь, до места где у вас лежит скрипт.

Создаём .ps1 файл с любым названием, отмечу что у меня он называется Auto_install.ps1. Далее я взял код из из документации по установке. Первая строка это установка самого менеджера пакетов Chocolatey. Вторая строчка усже обращается к установленному менеджеру и выполняет установку списка программ, записанных через пробел. Ключ “-y” в конце разрешает установку всех программ и зависимостей по умолчанию, на все запросы будет дано соглашение автоматически.

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install 7zip telegram googlechrome adobereader -y

После того как создали оба файла, запускаем от имени администратора .bat файл, у меня это Start_install. Запуститься установка Chocolatey, а затем сразу установка списка программ указанных в Auto_install.ps1 скрипте.

Всё, скрипты можно скидывать на новый компьютер, с сетевого диска и запускать установку программ.

Итог

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 bsod video
  • Не запускается служба windows audio win 7
  • Storage sense windows 10 что это
  • Нет вайфая на ноутбуке виндовс 10 после переустановки windows 10
  • Вы ввели неверный пин код несколько раз windows 10 a1b2c3