Skip to content

Latest commit

 

History

134 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Powertoy Home

GPL v3 Windows 8+ PowerShell 31 programs

Автоматический установщик программ для Windows в одну команду. Запусти — выбери программу из меню — готово.


Содержание


Быстрый старт

Откройте PowerShell и запустите одну из команд:

irm https://powertoy.erney.monster | iex

Альтернативная ссылка (напрямую с GitHub):

irm https://raw.githubusercontent.com/erneywhite/powertoy_home/refs/heads/main/powertoy.ps1 | iex

ℹ️ Права администратора не обязательны. Программы для пользователя ставятся как есть, а для требующих прав (.msi, драйверы) запрос UAC появится точечно — только на нужный установщик. Если планируете ставить много системных программ, удобнее сразу запустить PowerShell от имени администратора (тогда отдельных запросов UAC не будет).


Как это работает

1. Проверка прав администратора (необязательно)
   └─ Без админа скрипт работает; UAC запрашивается точечно только для
      программ, которым нужны права (MSI, драйверы, поле RequiresAdmin)
2. Приветственный экран с ASCII-енотом на 3 секунды
3. Проверка 7-Zip и winget → предложит автоустановку, если их нет
4. Загрузка списка программ из programs.json
5. Меню по категориям с отметкой ✓ для уже установленных
6. Выбор и установка
   ├─ Множественный выбор: «1 5 17» — покажет список и спросит подтверждение, ставит по очереди
   ├─ Поиск: «/firefox» — отфильтрует список
   ├─ Сброс поиска: «/»
   └─ Выход: q
7. Установка по типу
   ├─ Если в JSON задан WingetId и доступен winget → пробует через winget
   ├─ exe/msi → скачать (BITS + кастомный прогресс) → Start-Process
   ├─ archive (.zip) → 7-Zip распаковка → поиск .exe/.msi внутри
   ├─ ISO → скачать → Mount-DiskImage → ждать Enter → Dismount
   └─ Script → скачать .ps1 → выполнить через powershell.exe
8. Удаление %TEMP%\Installers после завершения сессии

Кеш установщиков работает в пределах сессии: при повторном выборе той же программы файл не качается заново. После выхода из скрипта %TEMP%\Installers удаляется. Лог сессии сохраняется в %TEMP%\powertoy.log.


Список программ

Архиваторы и утилиты

# Программа Тип Источник
1 7-Zip .exe 7-zip.org
2 WinRAR (7.00) .exe powertoy.erney.monster
29 HiBitUninstaller (4.0.10) .exe powertoy.erney.monster
30 WinDirStat .msi github.com
31 Paragon HDM Ru (17.20.9) archive powertoy.erney.monster

Офис

# Программа Тип Источник
28 LibreOffice .msi documentfoundation.org

Браузеры

# Программа Тип Источник
3 Firefox .msi mozilla.net
4 Google Chrome (latest) .exe powertoy.erney.monster

Мессенджеры и соцсети

# Программа Тип Источник
8 Discord (latest) .exe discord.com
14 Telegram .exe td.telegram.org

Игры и гейминг

# Программа Тип Источник
6 Steam (latest) .exe steamstatic.com
7 Epic Games Store .msi epicgames
17 CurseForge (latest) .exe overwolf.com
18 WeMod (latest) .exe wemod.com
19 WeMod PRO Unlocker .exe powertoy.erney.monster
20 Virtual Desktop Streamer (latest) .exe vrdesktop.net
21 SideQuest (0.10.42) .exe powertoy.erney.monster

VPN и безопасность

# Программа Тип Источник
9 AmneziaVPN (4.8.15.4) .exe github.com
11 1Password (latest) .exe 1password.com

Музыка и медиа

# Программа Тип Источник
10 Spotify (latest) .exe scdn.co

Системные утилиты

# Программа Тип Источник
5 Notepad++ .exe github.com
12 Windhawk .exe github.com
22 MiniBin (6.6.0.0) .exe powertoy.erney.monster

Торрент и облако

# Программа Тип Источник
13 qBittorrent .exe sourceforge.net
16 Synology Drive Client .exe synologydownload.com

Драйверы и периферия

# Программа Тип Источник
15 NVIDIA App (11.0.7.247) .exe nvidia.com
23 ID-COOLING (1.0.5) .msi powertoy.erney.monster
24 Z-SYNC (archive 1.0.19) .zip powertoy.erney.monster
25 Stream Dock (latest) .exe powertoy.erney.monster
26 Logitech G HUB (latest) .exe logi.com
27 RK Keyboard (latest) .exe s3.amazonaws.com

Структура репозитория

powertoy_home/
├── powertoy.ps1               # Основной PowerShell-скрипт установщика (логика)
├── programs.json              # Список программ (URL, аргументы, опц. WingetId/RequiresAdmin)
├── powertoy.php               # Отдаёт powertoy.ps1 сырьём или HTML-превью; срезает BOM
├── favicon.ico                # Иконка сайта
├── .github/workflows/ci.yml   # CI: JSON-валидация, PSScriptAnalyzer, еженедельный link-check
├── LICENSE                    # GPL-3.0
└── .gitignore

powertoy.php читает powertoy.ps1 с диска и отдаёт его сырьём при запросе от PowerShell (irm) или подсвеченным превью в браузере.

powertoy.ps1 при запуске загружает programs.json с сервера через Invoke-WebRequest (сырые байты + ручное UTF-8-декодирование со срезом BOM — иначе PS 5.1 ломает кириллицу) — добавление/обновление программ не требует правки самого скрипта.

.github/workflows/ci.yml — GitHub Actions: на каждый push/PR валидирует programs.json и прогоняет PSScriptAnalyzer; раз в неделю проверяет живость всех ссылок и заводит issue, если какая-то перестала отвечать.


Добавление программы

Добавьте объект в массив в programs.json:

Обычный .exe / .msi:

{
    "Name": "MyApp (1.0.0)",
    "Url": "https://example.com/myapp-setup.exe",
    "Args": "/S",
    "Installer": "myapp-setup.exe"
}

Файл в архиве (archive) — необходим 7-Zip:

{
    "Name": "MyApp (archive)",
    "Url": "https://example.com/myapp.zip",
    "Args": "/quiet",
    "Installer": "setup.msi",
    "Zip": "myapp.zip"
}

ISO-образ — скачивается, монтируется в систему как виртуальный диск. Опционально кладёт лицензионный ключ в буфер обмена. После установки нужно нажать Enter — скрипт размонтирует ISO:

{
    "Name": "MyApp (ISO)",
    "Url": "https://example.com/myapp.iso",
    "Installer": "myapp.iso",
    "Type": "ISO",
    "LicenseKey": "ABCDE-12345-FGHIJ"
}

PowerShell-скрипт — скачивает .ps1 и запускает через powershell.exe -NoProfile -ExecutionPolicy Bypass:

{
    "Name": "MyApp (script)",
    "Url": "https://example.com/install.ps1",
    "Installer": "install.ps1",
    "Type": "Script"
}

Поля:

  • Name — отображается в меню.
  • Category — заголовок группы в меню (например "Браузеры", "Игры и гейминг"). Программы с одинаковой категорией будут показаны вместе. Если поле отсутствует — попадёт в группу Прочее.
  • Url — прямая ссылка на установщик (или ZIP/ISO/PS1).
  • Args — аргументы тихой установки. Для .exe обычно /S или /silent, для .msi/quiet /norestart. Пустая строка "" запустит установщик без аргументов (графический мастер). Игнорируется для типов ISO и Script.
  • Installer — имя файла, под которым установщик будет сохранён в %TEMP%\Installers. Для archive-типа — имя установочного файла внутри архива (*.exe или *.msi).
  • Zip (опционально) — имя ZIP-файла, под которым он будет сохранён локально перед распаковкой. Указание этого поля переключает программу в режим archive.
  • Type (опционально) — переопределяет тип установки:
    • "ISO" — монтирует ISO, ждёт Enter, размонтирует.
    • "Script" — запускает .ps1.
  • LicenseKey (опционально, только для ISO) — копируется в буфер обмена перед монтированием.
  • WingetId (опционально) — идентификатор пакета в winget, например "Mozilla.Firefox". Если поле задано и winget доступен, скрипт сначала пробует установку через него — это даёт последнюю версию и проверенные хеши. При ошибке winget — фолбэк на Url.
  • RequiresAdmin (опционально) — true, если для установки нужны права администратора. Тогда (а также для всех .msi) скрипт запустит установщик с запросом UAC точечно. Без флага обычные .exe, требующие админа, как правило сами показывают UAC.

После правки programs.json достаточно загрузить новую версию на сервер — изменения подхватятся при следующем запуске irm https://powertoy.erney.monster | iex без правки самого скрипта.


Нюансы

Note

  • Права администратора: НЕ обязательны. Скрипт работает без админа; программы для пользователя ставятся как есть, а для требующих прав (все .msi, драйверы, пункты с RequiresAdmin) запрашивается UAC точечно — только на этот установщик.
  • 7-Zip: необходим для установки программ с пометкой archive. При отсутствии скрипт предложит его установить.
  • BITS: загрузка через Start-BitsTransfer -Asynchronous с прогресс-баром (скорость + ETA) и автоповтором до 3 попыток при сбое — надёжно для больших файлов и нестабильной сети.
  • Кеш в сессии: повторный выбор той же программы не перекачивает файл — берётся из %TEMP%\Installers. После выхода из скрипта папка удаляется.
  • Лог сессии: %TEMP%\powertoy.log — что качалось, когда, успех/ошибка. Полезно для дебага.
  • Отметка ✓: скрипт сканирует реестр Uninstall (HKLM + HKCU + WOW6432Node) и помечает уже установленные программы. Сопоставление по подстроке имени, возможны ложные срабатывания.
  • Winget: если в programs.json задано поле WingetId и команда winget доступна — скрипт сначала пробует установку через winget, при ошибке переходит на прямую загрузку. Если winget не найден при старте — предложит установить его (App Installer; ставится для пользователя, без админа).
  • WeMod PRO Unlocker: неофициальный патчер. Используйте на свой страх и риск.
  • Безопасность: запускайте скрипты irm | iex только из доверенных источников. При желании можно предварительно скачать powertoy.ps1 и прочитать код вручную.

Лицензия

GPL-3.0 — см. файл LICENSE.


Made by ErneyWhite

About

Скрипт для установки основных программ PowerShell

Resources

Stars

5 stars

Watchers

1 watching

Forks

Contributors

Languages