Наверное вы задавались вопросом, а можно ли упростить себе переустановку системы.
Конечно вы подразумеваете что переустановка Windows включает установку драйверов и нужного ПО. Office, Браузер и так далее.
Программа называется Silent Install Helper. Ссылка на sourceforge программы: sourceforge.net/projects/sih
Программа скачивается и запускается без установки.
Главное окно программы:
Эта программа обладает огромными возможностями для автоматизации установки.
Программа может создать скрипт для авто установки софта.
И так же установить весь софт прямо из программы.
Нам нужно создать скрипт для установки.
В 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 }
Процесс выглядит так.
Осталась сущая мелочь — прицепить запуск скрипта к установке системы. Как обычно, выбор между 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 для установки нескольких программ одновременно:
- Запустите Терминал Windows или Windows PowerShell от имени администратора, сделать это можно в контекстном меню командной строки.
- Выполните поиск нужных приложений с помощью команды (вместо имени приложения можно использовать его часть)
winget search имя_приложения
и обратите внимание на ИД нужных приложений (скопируйте их куда-либо).
- Для установки сразу нескольких приложений по их ИД используйте команду
winget install --id=ИД_ПРИЛОЖЕНИЯ1 -e -h ; winget install --id=ИД_ПРИЛОЖЕНИЯ2 -e -h
указывая нужные приложения (в примере — лишь два, но может быть больше, разделенных знаком «;»).
- Дождитесь завершения скачивания и установки выбранных приложений.
Команду из 3-го шага можно сохранить для использования в дальнейшем на этом или других компьютерах, чтобы не выполнять поиск приложений повторно.
Dev Home (Домашняя версия для разработчиков)
Ранее на сайте рассматривалось приложение Dev Home в контексте добавления виджетов использования ресурсов компьютера в Windows 11. С помощью этого же приложения от Microsoft можно автоматизировать установку программ:
- Загрузите приложение Dev Home из Microsoft Store (оно может быть уже установлено в Windows 11).
- Запустите приложение, перейдите в раздел Конфигурация компьютера — Установка приложений.
- Выполните поиск нужных приложений, нажимая «+» для добавления в список установки.
- Нажмите кнопку «Далее», примите условия лицензии и нажмите кнопку «Настроить» для установки выбранных приложений.
Останется лишь дождаться скачивания и установки требуемых программ.
Winstall
Winstall — онлайн-сервис для поиска приложений и генерации скрипта для их автоматической установки с помощью winget.
Порядок использования:
- Зайдите на сайт https://winstall.app/ и найдите нужные приложения, нажимая «+» для их добавления.
- Добавив нужные приложения, нажмите кнопку «Generate script».
- Выберите тип скрипта и либо скопируйте его в буфер обмена для вставки в командной строке или PowerShell, либо скачайте файл скрипта для запуска и автоматической установки выбранных программ.
- Запустите готовый скрипт для установки приложений.
В отдельной статье — подробно про использование Winstall.
Ninite
Ninite, возможно, самый простой способ создания пакета для установки набора программ. Всё, что требуется для использования — зайти на сайт https://ninite.com/ и отметить нужные приложения:
После этого нажать кнопку «Get Your Ninite» чтобы скачать установщик, который автоматически загрузит и установит все выбранные программы на вашем компьютере, при этом не установив ничего лишнего, даже если официальный установщик пробует это сделать.
Подробнее о сервисе Ninite — в этом материале.
Надеюсь, информация была полезной, а если вы знаете другие возможности реализации описанного, буду рад вашему комментарию ниже.
QuickInstallApp
QuickInstallApp — это удобное и простое приложение для автоматизации установки программного обеспечения на Windows. Оно предназначено для ускорения процесса настройки нового компьютера или виртуальной машины, позволяя вам загружать и устанавливать нужные программы с минимальными усилиями.
🎯 Особенности
- Автоматическая загрузка и установка: Просто укажите программы, и приложение загрузит их из сети и установит автоматически.
- Гибкая настройка параметров: Поддержка пользовательских аргументов для установки (например, режимы тихой установки).
- Поддержка нескольких архитектур: Определение и выбор версии приложения в зависимости от архитектуры системы (x86/x64).
- Удобный интерфейс: Графический интерфейс с прозрачным наложением, реализованный на базе
ClickableTransparentOverlay
иImGui
. - JSON-хранилище данных: Легко добавляйте новые программы или изменяйте параметры загрузки с помощью простых JSON-файлов.
- Управление тегами: Категоризация приложений с помощью тегов для упрощения поиска и выбора.
- Обратная связь по прогрессу: Удобное отображение прогресса загрузки и установки в реальном времени.
🚀 Как использовать
-
Скачайте и установите приложение:
- Клонируйте репозиторий, используя команду:
git clone https://github.com/Rianvy/QuickInstallApp.git
- Откройте проект в Visual Studio или любом другом подходящем IDE для работы с C#.
- Выполните сборку проекта, следуя стандартным инструкциям вашей IDE.
- Клонируйте репозиторий, используя команду:
-
Создайте JSON-файл с конфигурацией программ:
- Для упрощения процесса создания конфигурации воспользуйтесь онлайн-генератором JSON-файлов:
Генератор JSON для QuickInstallApp. - Укажите информацию о необходимых программах, включая их название, URL-адреса для загрузки и дополнительные параметры установки.
- Для упрощения процесса создания конфигурации воспользуйтесь онлайн-генератором JSON-файлов:
-
Разместите 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"] }
- Сохраните сгенерированный JSON-файл с именем
-
Запустите приложение:
- Откройте собранное приложение.
- В интерфейсе выберите нужные программы для установки.
- Нажмите кнопку для начала процесса загрузки и установки.
- Следите за прогрессом в реальном времени.
📂 Структура проекта
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, буквально парой команд. У данной программы есть как минусы так и плюсы. Подробнее о них распишу позже, а также обновлю скрипт для работы с сетевого диска, без необходимости скидывать его на компьютер.