Прямая ссылка: https://youtu.be/6HPRNnk_9nU
Tag Archives: windows
Список софта из видео «Как выжить на Windows XP в 2020 году»
Официальный сайт
Копия на Mega.NZ
Официальный сайт
Автономный установщик
Firefox Setup 49.0.2
Firefox Setup 52.9.0esr
https://github.com/Feodor2/Mypal/releases
Дистрибутив
Справка (русская)
Копия на Mega.nz (Дистрибутив+справка в RAR SFX-архиве)
KB828041 (первое обновление)
Пакет обеспечения совместимости
Средство удаления скрытых данных
Официальный сайт
Far Manager v3.0 build 5577 x86
Far Manager v2.0 x86
Far Manager v2.0 x86 (урезанная версия для встраивания в образы)
.NET 2.0
.NET 3.5
.NET 4.0
Копии в одном архиве (ZIP)
Aimp + Aimp Tools + Plugins (визуализации) ZIP
Скачать с официального сайта:
Версия x86 (32-разрядная)
Версия x64 (64-разрядная)
Копии:
Версия x86 (32-разрядная)
Версия x64 (64-разрядная)
Выжить на Windows XP в 2020 г. Часть II. Офисные пакеты и антивирусы.
Прямая ссылка: https://youtu.be/ArbPkSVoA7E
Выжить на Windows XP в 2020 г. Часть I
Прямая ссылка: https://youtu.be/Z1Dtpr6EcCA
Подключение Riseup VPN в Windows XP

Приходится кое-где сидеть на старой машине с XP (хорошо, не с 2000), а безопасно посидеть в интернете хочется. Так что от склероза, и мало ли кому надо будет. Аналогичным образом можно подключить на XP и VPN от calyx.net
1. Необходимо установить OpenVPN для Windows XP:
Скачать с официального сайта:
— Версия x86 (32-разрядная)
— Версия x64 (64-разрядная)
Копии, на случай, если с официального сайта пропадет:
— Версия x86 (32-разрядная)
— Версия x64 (64-разрядная)
2. Далее, качаем конфиги:
Для Riseup:
— C Mega.nz
— C Google.Drive
Для Calyx:
— C Mega.nz
— C Google.Drive
3. Конфиги необходимо распаковать в каталог для файлов конфигурации OpenVPN (C:\Program Files\OpenVPN\config
)
Получение ключей для VPN сделано обычным BAT-файлом, без проверок fingerprint’а сертификата провайдера, а в wget
, которым все и выкачивается, указан ключ --no-check-certificate
, так что все это дело не сильно секурно.
1. Скачиваем архив с GitHub
На всякий случай копия на Google.Drive и Mega.nz
2. Распаковываем архив в отдельный каталог, пусть будет C:\GetKeys
3. Запускаем командную строку (Пуск —> Выполнить и вводим cmd
)
4. Переходим в каталог:
С:
cd \GetKeys
5. Запускаем получение ключей.
Для Riseup:
getkeys.bat riseup.net
Для Calyx, соответственно:
getkeys.bat calyx.net
После того, как батник отработает, в C:\GetKeys
образуется подкаталог data
с подкаталогами провайдеров. Из C:\GetKeys\data\riseup.net
надо скопировать в C:\Program Files\OpenVPN\config
файлы cacert.pem
и openvpn.pem
для Riseup VPN, а для Calyx из C:\GetKeys\data\calyx.net
те же файлы, переименовав их, соответственно как cacert_calyx.pem
и openvpn_calyx.pem
. Или можете отредактировать конфиг calyx-net.ovpn
и задать там любые желательные имена.
Теперь можно запускать OpenVPN GUI, выбирать, щелкнув по иконке в трее, нужный конфиг, и соединяться.
До соединения:
Riseup:
Получение ключей и сертификатов для Riseup VPN и calyx.net в Windows.

Без использования клиента Riseup или Bitmask для Calyx.
Наскриптил тут утилитку, которая выкачивает ключи для Riseup VPN копия, а заодно уж и для calyx копия под Windows. Изначально писалось для XP, т.к. оказалось, что официальный клиент Riseup в XP не работает, а Calyx вообще использует Bitmask, которого для винды не предвидится.
Моя утилита тоже, как оказалось, не всегда работает в XP, но для XP я таки придумал, как выгрузить ключи и подключиться к Riseup, но об этом в другой раз.
Так что получилась такая утилита, чтобы подключаться к Riseup и Calyx не качая официального клиента. Пусть уж будет.
1. Ставим OpenVPN
2. Качаем виндоконфиги:
Для Riseup:
— C Mega.nz
— C Google.Drive
Для Calyx:
— C Mega.nz
— C Google.Drive
3. Распаковываем конфиги в каталог конфигов OpenVPN (Обычно C:\Users\<имя_пользователя>\OpenVPN\config\
).
4. Качаем утилиту отсюда и распаковываем в отдельный каталог. Она портабельная, никакой установки не надо.
5. Запускаем.
6. Выбираем в выпадающем списке провайдера.
7. Жмем на кнопку «Получить ключ пользователя» Если данных и сертификата провайдера нет, то программа сначала получит данные провайдера, а потом пользователя. Если данные провайдера есть, то обновится только пользовательский ключ.
Если в дальнейшем надо будет принудительно обновить данные провайдера, жмем кнопку «Обновить данные провайдера«
Примечание: Если надо добавить нового провайдера, то дописываем адрес без http://, https:// и www в файл providers.txt
в подкаталоге data
, по адресу на строку.
Должно получиться как на скриншоте:

8. Жмем кнопку «Сохранить ключи…» и сохраняем их в каталог с конфигами OpenVPN. Имена ключей для Riseup оставляем без изменений, а для Calyx сохраняем как cacert_calyx.pem
и openvpn_calyx.pem
. Или можете отредактировать конфиг calyx-net.ovpn
и задать там любые желательные имена.
Полезные фишки в BAT/CMD файлах.
exit /B
Ключ /B
обязателен! Если использовать просто exit
— закроется командный интерпретатор.
Можно использовать для проверки параметров в командной строке.
if "%~1"=="" ( echo Use %0 ^<address^> echo Address must be without http://, https:// or www echo e.g. riseup.net pause exit /B )
Аналог VAR=`program`
в bash.
for /f %%i in ('program') do set "API_URI=%%i"& goto f1
:f1
Пример:
for /f %%i in ('bin\jq .api_uri %WORKDIR%/provider.json') do set "API_URI=%%i"& goto f1
:f1
Статья на Киберфоруме Копия в PDF
В BAT/CMD файле некоторые символы (перенаправления >
и <
, конвейера |
, символ &
, указание переменной %
) считаются специальными. Если символ должен быть включен в команду как символ, могут быть глюки. Перед символом нужно указать символ экранирования: ^
(крышку).
Пример:
echo Use batfile.bat ^<address^>
(выведет на экран Use batfile.bat <address>
)
Источник Копия в PDF Там есть и другие полезные штуковины.
Например, надо удалить из переменной %VAR%
все кавычки:
set VAR=%VAR:"=%
Источник Копия в PDF В источнике есть и другие примеры работы со строками.
OpenVPN для Windows XP.

Последняя поддерживающая Windows XP версия OpenVPN это 2.3.18.
— Версия x86 (32-разрядная)
— Версия x64 (64-разрядная)
Mozilla Firefox для Windows XP

Чтоб не пролюбилось, мало ли с официального сайта пропадет, а понадобится:
C# Всплывающая форма над областью уведомлений, делаем сами.
Продолжаем разговор о своем окне, всплывающем возле области уведомлений, там где NotifyIcon
. Как в тех же мессенджерах при появлении нового сообщения.
На самом деле все оказывается довольно просто, и даже Ктулху вызывать пользоваться WinAPI не надо.
На первом этапе моделируем будущую всплывающую форму. Я, например, создал форму без границ (FormBorderStyle = none
), поместил на нее TextBox
, который будет отображать сообщение и PictureBox
, который будет работать в качестве кнопки закрытия формы.
На форму добавляем необходимые компоненты, которые отвечают за отображение информации и таймер (tmrAni
), который будет отвечать за анимацию всплытия формы.
1. Заводим переменные, сохраняющие позиции формы:
private int StartPosX; private int StartPosY;
Ну я еще добавил переменную для сообщения и экспортировал функцию WinAPI, прячущую текстовый курсор:
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern bool HideCaret(IntPtr hWnd);
public string MessageText = "";
Плюс настроил в инициализации формы некоторые ее параметры:
public frmPopup() { InitializeComponent(); //Настройка формы this.TopMost = false; this.ShowInTaskbar = false; }
TopMost = false
нужен, чтоб форма всплывала из-за области уведомлений, а не загораживала ее собой.
2. Переопределяем обработчик события Load
и в нем прячем форму за экран:
protected override void OnLoad(EventArgs e) { //Прячем форму за экран StartPosX = Screen.PrimaryScreen.WorkingArea.Width - this.Width; StartPosY = Screen.PrimaryScreen.WorkingArea.Height; SetDesktopLocation(StartPosX, StartPosY); base.OnLoad(e); //запуск анимации всплытия tmrAni.Interval = 50; tmrAni.Start(); }
Туда же можно вставить запуск таймера, который будет анимировать всплытие формы (после base.OnLoad(e)
).
Если просто вставить этот код в обработчик события Load
, то форма на секунду появится на экране, и будет некрасиво.
3. Далее в обработчиках событий Load
и Shown
настраиваем нашу форму, например, присваиваем TextBox
нужный текст и т.д.
private void frmPopup_Load(object sender, EventArgs e) { //настраиваем TextBox с сообщением txtMessage.Height = this.Height - txtMessage.Location.Y - 3; txtMessage.Width = this.Width - txtMessage.Location.X - 3; txtMessage.BorderStyle = BorderStyle.None; txtMessage.BackColor = this.BackColor; txtMessage.Text = MessageText; txtMessage.ReadOnly = true; txtMessage.SelectionStart = 0; //и кнопку закрытия int CloseX = this.Width - pbClose.Width - 3; int CloseY = 3; pbClose.Location = new Point(CloseX, CloseY); } private void frmPopup_Shown(object sender, EventArgs e) { HideCaret(txtMessage.Handle); }
3. При каждом срабатывании таймера поднимаем форму на 5 пикселей, а когда форма покажется полностью, то останавливаем таймер и делаем ее «поверх всех окон» (TopMost = true;
):
private void tmrAni_Tick(object sender, EventArgs e) { //поднимаем форму на 5 пикселей StartPosY -= 5; //Если окно видно полностью - останавливаем таймер if (StartPosY < Screen.PrimaryScreen.WorkingArea.Height - Height) { tmrAni.Stop(); this.TopMost = true; } else { SetDesktopLocation(StartPosX, StartPosY); } }
Вот, что получилось:

C# Всплывающая форма над областью уведомлений, над NotifyIcon
Спрашивают, как можно сделать всплывающую форму над областью уведомлений, там где «часики» и иконки запущенных в фоне программ. Ну типа как это делается в мессенджерах при получении нового сообщения.
Вот, нашел вам готовый код. Выглядит вполне симпатично.

Можно поиграть с разными опциями, типа эффекта появления и звука при всплытии. Минус — сильно длинный текст отобразить без допиливания не получится.
Потом расскажу, как самому сделать что-то подобное, пусть и не такое симпатичное.
EEE PC 2G SURF драйвера и программы

Принесли тут в починку (причем уже второй) такой вот недобук. Убил полдня на него, пришлось делать отдельный дистрибутив XP, из которого было выкинуто почти все лишнее, чтоб влез.
А вот архив для него с родными дровами, софтом и всем прочим. На всякий случай, мало ли кому надо будет.
Установка PHP в любой каталог, а не только в C:\php
Заметка от склероза, как обычно.
1. Качаем PHP и распаковываем архив в нужный каталог. Пусть для примера будет D:\Software\php
2. Копируем свой php.ini
в этот каталог, или php.ini-development
переименовываем в php.ini
3. Находим в секции [PHP]
параметр extension_dir
и меняем его значение на D:\Software\php\ext
4. Создаем в подкаталоге php
каталог tmp
, для временных файлов PHP
5. В секции [PHP]
находим параметр sys_temp_dir
и меняем значение на D:\Software\php\tmp
extension_dir = "D:\Software\php\ext"
sys_temp_dir = "D:\Software\php\tmp"
PHP для Windows слэши в путях (прямой или обратный) не важны, правильно переваривается и тот и тот:
extension_dir = "D:/Software/php/ext"
sys_temp_dir = "D:/Software/php/tmp"
6. Раскомментируем нужные расширения, например:
extension=bz2
extension=fileinfo
extension=gd2
extension=gettext
7. Если в проекте планируется использовать cURL, то добавляем в переменную окружения PATH
каталоги с php.ini
(D:\Software\php
) экзешником curl.exe
и библиотекой php_curl.dll
1. Установка Apache 2.4VC14 + PHP 7 на Windows 7 - 10
2. Настройка curl php на Windows
Автоматическое получение конфигов и пароля к VPN от vpnbook, теперь и для Windows.
По многочисленным просьбам зрителей, сделал римейк собственных недавних скриптов (копия копия), только теперь для Windows.
Написал небольшую программулину на C#, которая делает то же самое, что и вышеописанные скрипты.
— для распаковки ZIP-архивов использовал библиотеку DotNetZip, она же Ionic.Zip (копия)
— а для распознавания пароля на картинке, не мудрствуя лукаво, вызвал tesseract
, естественно, версию под Windows.
Она в архиве с готовыми бинарниками самой программы, единственное, что может потребоваться, это поставить VCRedist для Visual C++ 2015

Получение пароля
— Программу
— Библиотеки для работы tesseract:
— Visual C++ Redistributable for Visual Studio 2015 (c сайта Microsoft)
— vc_redist.x86.exe
— vc_redist.x64.exe
C#. Определить каталог пользователя.
Он же папка профиля пользователя, т.е., C:\Users\<имя пользователя>
, например C:\Users\Tolik
для пользователя Tolik
.
Проще всего посмотреть в переменную окружения USERPROFILE
:
Environment.GetEnvironmentVariable("USERPROFILE");
Для .NET Framework 4 и выше, путь к каталогу профиля пользователя добавлен в перечисление Environment.SpecialFolder
под именем UserProfile
. Таким образом, получить папку пользователя можно вот так:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
static void Main() { string UserProfile = Environment.GetEnvironmentVariable("USERPROFILE"); MessageBox.Show(UserProfile, "User profile folder path", MessageBoxButtons.OK, MessageBoxIcon.Information); }
NSIS: определение версии и архитектуры Windows
Одна из частых задач при создании инсталлятора — определить версию и архитектуру ОС, например, чтобы в зависимости от этого подкладывать нужную версию экзешника, или устанавливать нужный драйвер.
Для отображения версии Windows можно воспользоваться готовым кодом из NSIS wiki. На выбор предоставлены два скрипта: только для клиентских ОС и для клиентских и серверных. Для своих целей я пользовался вторым, правда в нем есть небольшой баг — клиентская Windows XP x64 определяется как Windows Server 2003:

Создаем отдельный пустой NSIS-скрипт, копируем туда код из wiki, и сохраняем в тот же каталог, где находится основной скрипт инсталлятора под любым удобным названием, например gvv.nsi
.
В основном скрипте подключаем этот файл:
!include gvv.nsi
Далее вызываем GetWindowsVersion
, записываем результат в переменную (например, в предопределенную $R0
) и выводим результат:
${GetWindowsVersion} $R0
DetailPrint "Windows Version: $R0"
Так сказать, «точное» определение версии. Применяется, когда надо выполнить определенные действия, например, в XP и только в XP, или в семерке и только в семерке.
Для этого в комплекте есть модуль WinVer.nsh
, сначала подключим его:
!include WinVer.nsh
Далее используем if
и один из макросов IsWin?
, например IsWinXP
, IsWin7
, IsWin10
:
${If} ${IsWinXP} DetailPrint "Is Windows XP" ${EndIf}
Применяется, когда нужно выполнять код, если версия ОС выше нужной или нужная.
В WinVer.nsh
есть другой комплект макросов — AtLeastWin?
(AtLeastWin7
, AtLeastWin8
, AtLeastWin10
) которые также нужно использовать вместе с if
. Например, следующий код сработает на «семерке» и всех последующих версиях Windows. В деталях установки отобразится соответствующее сообщение:
${If} ${AtLeastWin7} DetailPrint "Is Windows 7 or higher" ${EndIf}
Для определения архитектуры ОС необходимо подключить модуль x64.nsh
(также поставляется вместе с компилятором NSIS):
!include x64.nsh
Поддерживается определение архитектуры x86 (IsNativeIA32
), PC (AMD) x64 (IsNativeAMD64
) и ARM64 (IsNativeARM64
) пример кода есть в самом файле x64.nsh
🙂 Мне ARM была не нужна, поэтому пример кода на три строки короче:
${If} ${IsNativeAMD64} DetailPrint "System Architecture: x64" ${ElseIf} ${IsNativeIA32} DetailPrint "System Architecture: x86" ${Else} DetailPrint "Unsupported CPU architecture!" ${EndIf}
1. Get Windows version
2. Stackoverflow
NSIS: Hello, world.
Изучение любого языка начинается с Hello, world, вот и я не буду отступать от этой традиции. Напишем простой инсталлятор, который даже не инсталлятор, потому что ничего не устанавливает, а просто пишет сообщение пользователю.
Name "HelloWorld" OutFile "helloworld.exe" ShowInstDetails show RequestExecutionLevel User Section DetailPrint "Hello, world!" SectionEnd
Сначала пишем обязательную конструкцию Name
и придумываем имя установщика, тут, естественно, "HelloWorld"
. Имя может содержать пробелы, оно будет отображаться в заголовках окон и окнах инсталлятора, а также попадет в список программ в «Программы и компоненты», в случае реального установщика.
Далее идет обязательная конструкция OutFile
— файл установщика. Если его не прописать, то компилятор не будет знать под каким именем собрать программу установки и пошлет нас.
Следующим шагом (ShowInstDetails show
) развернем окно с логом установки, как это было описано в предыдущей копия заметке.
Теперь запрашиваем запуск из под пользователя с ограниченными правами (RequestExecutionLevel User
). Инсталляторы обычно запускаются с правами администратора, но в данном случае мы ничего не устанавливаем, и нажимать лишний раз кнопку в окошке UAC не нужно.
Далее необходимо завести хотя бы одну секцию. Если в скрипте не будет хотя бы одной секции — компилятор прервет работу. Организуем единственную секцию без названия.
Section [ТУТ БУДЕТ КОД] SectionEnd
На самом деле секции нужны для того, чтобы сделать возможным выбор компонентов устанавливаемой программы, полную или выборочную установку. Но об этом как-нибудь в другой раз.
Внутри секции пишем сообщение, выводящее заданный текст в окошко с логом (деталями установки):
DetailPrint "Hello, world!"

На самом деле выбора не так, чтобы много, но какой-никакой есть. На официальном сайте предлагают пользоваться Eclipse и плагином к нему, но у меня на Клипсу, wim и TeX стойкая аллергия еще со студенческих времен.
Есть плагин для Visual Studio, но написан он китайцами для китайцев, так что нафиг. Впрочем, может есть и нормальные плагины, но я не нашел. Сам пользуюсь пожилой средой Venis IX, там есть мастер для генерации простых установщиков, которого вполне хватает, чтоб постоянно не писать одно и то же, создавая новый инсталлятор.
NSIS: Открыть окошко с логом установки (Show details) по умолчанию
Если ничего не делать, детали установки по умолчанию скрыты:

Чтобы лог установки сразу был виден пользователю, необходимо применить один из следующих методов:
1. В коде скрипта, до секций прописываем команду:
ShowInstDetails show
Окошко с логом (деталями установки) будет открыто

2. Прописать внутри секции команду:
SetDetailsView show
Это может быть полезно, например, если вы хотите, чтобы детали показывались и при удалении. В таком случае, вышеуказанная команда добавляется в начало секции, описывающей анинсталлер:
Section Uninstall SetDetailsView show [..] [..] SectionEnd

Переделал автоматический инсталлятор для Devcon. Или куча ворчания.
Делал, чтоб клиенту меньше ручками работать. Теперь не надо самому определять версию винды, и вытаскивать нужный devcon из архива соответственно.
Предыдущий я сделал на Inno Setup, но Inno Setup оказался той еще заразой, нихрена он версию Винды толком определить не мог, и тихой сапой подкладывал во все винды один и тот же devcon, который подходит для Windows 7 и выше. От чего у клиента с виндой XP x64 произошел адский баттхерт, так, что забрызгало пол-Петербурга, аж до моей деревни брызги долетели. Видимо, клиент меня проклял, потому что мне на ногу упал топор (слава Ктулху обухом), у меня упали форточки, точнее форточка, но стеклянная и на пол, ко мне какого-то черта приперлась лесная охрана и стала [РОСКОМНАДЗОР], и я после этого [РОСКОМНАДЗОР] в результате, теперь страдаю [МИНЗДРАВ].
Новый сделал на NSIS, но как оказалось — NSIS тоже [РОСКОМНАДЗОР], точнее, не сам NSIS, он мне как раз понравился, за исключением одного странного недокументированного глюка, о котором как-нибудь расскажу, и скрипт-язык, вполне себе такая помесь Бейсика с Башем. А вот документация, это, товарищи, лютый [РОСКОМНАДЗОР] в последней стадии.
Русский мануал к популярному инсталл-мэйкеру писали сто лет назад какие-то [ДАННЫЕ УДАЛЕНЫ] с OSZone.net, еще и назвали свое творение «справочником», хотя что-что а справочники так не делают. Просто плохо структурированные статьи, которые на [РОСКОМНАДЗОР] запихнули в chm-файл. [РОСКОМНАДЗОРКА], поучитесь у того же Исзелиона с wasm.ru, как нужно делать справочники и мануалы. На туториале Исзелиона сотня-другая студентов если не аспирантами стали, так свой зачет по ассемблеру точно получили. Аффтар еще и жалуется на форуме, типа, «ну на[РОСКОМНАДЗОР] обновлять мануал, если его никто не читает, и очевидные вопросы задает». Так [РОСКОМНАДЗОРКА], [РОСКОМНАДЗОРКА], ты так написал этот мануал, что кошка [РОСКОМНАДЗОРОМ] по клавиатуре лучше напишет. Но ладно, я много захотел, русского мануала. Да, согласен. Но теперь «поговорим о влажности в номере», точнее об оригинальной вики от разработчиков.
Оригинальная вики тоже [РОСКОМНАДЗОРНЫЙ], [РОСКОМНАДЗОР] твою мать, [РОСКОМНАДЗОР]. Причем, я вполне себе уверен, что там есть все описания функций языка NSIS, вот только отдельной категории для списка функций нет. Функции потом ищутся гуглем, который выводит на страницу-сироту с вполне нормальным описанием, но [РОСКОМНАДЗОР] знает, почему на эту страницу нельзя попасть из самой вики. В навигации [РОСКОМНАДЗОР] не валялся, в общем без стакана не разобраться. А еще пишут, что «хорошо документированный продукт». Документирован он может и хорошо, но найти в документации что-то конкретное, это как в ГОРФ пойти к чиновнику: «вы мне справку ЕПРСТ-1488 принесли, а надо было ЖПЧШЦ-666», и [РОСКОМНАДЗОР] знает где это написано.
Даже есть мысль как-нибудь выкачать эту вики себе на комп, сделать нормально, попытаться перевести и выпустить в виде справочника.
Впрочем, инсталлер сделал:
Скачать с Mega.nz
С GitHub
Исходник (файлы devcon_all.nsi и gvv.nsi)
Устранение ошибки драйверов USB 3.0 при установке Windows 7 с флэшки с помощью установщика Windows 8/8.1
При установке Windows 7 на компьютер с USB 3.0 можно столкнуться с ошибкой «Не найден необходимый драйвер для дисковода оптических дисков.«, на самом деле, дисковод оптических дисков тут не при чем, особенно, если установка производится с загрузочной флэшки с дистрибутивом «семерки». В Windows 7 и его установочном окружении просто нет драйверов для контроллеров USB 3.0.

Самый простой вариант, когда в BIOS/UEFI удается переключить USB-контроллер в legacy-режим. Но на многих системах это самое legacy реализовано весьма коряво. Например, live-дистрибутивы Linux могут в таком режиме видеть и контроллер, и подключенные накопители, а вот установщик Windows 7 (и сама винда) нет.
На днях попался такой ноутбук, в котором примерно так и получалось, и вот, хочу рассказать об интересном способе это побороть.
Конечно, можно поступить стандартно — создать отдельный дистрибутив для такого компьютера, внедрив нужные драйвера, или же скачать какую-нибудь «колхозную» сборку. Но есть и другой способ — воспользоваться установочным окружением от Windows 8/8.1 в котором драйвера для USB 3.0 есть.
Минус способа — в установленной Windows 7 драйвера для USB 3.0 будут отсутствовать, как, наверняка, и драйвера от сетевой карты, и возникнет проблема, как их туда затолкать.
В источнике есть способ сделать это с помощью консоли восстановления с получившейся флэшки, у меня же получилось еще проще. Кривое ноутбучное legacy поддерживалось Linux’ом с System Rescue CD, так что на этом моменте я останавливаться не буду.
1. Образ установщика Windows 7
2. Образ установщика Windows 8/8.1
3. Флэшка 🙂
1. Закатываем на флэшку дистрибутив Windows 8/8.1, например, с помощью программы Rufus, особых подробностей я рассказывать не буду, но я сначала переключил UEFI ноута в режим Legacy BIOS (хоть он работал нормально и, главное, был), снес б-гмерзкое GPT, а потом установил в Rufus «Схема раздела и тип системного интерфейса» в значение «MBR для компьютеров с BIOS или UEFI«.

2. Итак, у нас получилась флэшка с Windows 8/8.1, переходим на нее, заходим в каталог sources
и удаляем оттуда файлы install.wim
и/или install.esd
.
3. Теперь из образа Windows 7 вытаскиваем файл install.wim
(он тоже лежит в подкаталоге sources
образа). Если у вас образ AIO, т.е. «все в одном», образ, из которого можно установить сразу несколько версий Windows, например, Starter, Home и Professional, то необходимо из образа Windows 7 вытащить файлы sources/*.clg
, например, install_Windows 7 Home Basic x64.clg
, install_Windows 7 Home Premium x64.clg
и т.д. Также можно попробовать скопировать папку $OEM$
, но не везде срабатывает, т.е. иногда конкретный дистрибутив может ее проигнорировать.
4. Теперь копируем все, что вытащили из дистрибутива Windows 7 в каталог sources на флэшке.
5. ФАНФАРЫ!
Загрузчик установщика Windows современных версий сначала загружает файл boot.wim
, который представляет из себя хитрый архив (виртуальный диск, наподобие initrd
в Linux), содержащий необходимые для процесса установки драйвера, основные файлы и саму программу-установщик. Далее окружение предустановки ищет дополнительные компоненты на диске с boot.wim
, в частности install.wim
, виртуальный диск с файлами операционной системы, которая должна быть установлена. Тут мы просто оставили предустановочное окружение, подсунув ему ОС другой версии.