UniversalTool/README.md
2026-07-07 18:19:47 +05:00

65 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# nexdex.space — sources
это открытая версия исходников (для гита) — читаемый python/flask код без
скомпилированных бинарей. если нужен готовый инструмент — смотри релиз
`nexdex.space-setup.exe`, который разворачивает всё сам (portable python +
ffmpeg внутри, ничего ставить не надо). лицензия — MIT, см. `LICENSE`.
---
## структура
```
app/ — flask-приложение (см. app/README.md — там всё подробно)
app.py
backend/ — downloader, converter, metadata, scripts_format, search, history
templates/
static/
installer/ — исходники установщика (реальный, рабочий C++)
installer.cpp — консольный лаунчер: при первом запуске достаёт из себя
зашитый ресурс (payload.zip — portable python + весь
app/ + ffmpeg), распаковывает в %LOCALAPPDATA%\nexdex.space,
создаёт ярлык на рабочем столе, дальше просто запускает
installer.rc — иконка + payload как RCDATA-ресурс + версия файла
(CompanyName/LegalCopyright = savsis)
icon.ico
extras/ — декоративное, в билд не входит, просто чтобы на гите было
видно "по чуть-чуть" разных языков
rust/ — тестовый cargo-проект (audio tag, playlist, crc32, progress bar)
cpp/ — отдельный от installer/ хедер-онли C++ (то же самое, что rust/)
go/ — тестовый go-тул (поиск/прогресс, аналогично)
batch/ — фенси .bat-меню (реальный лаунчер — app/start.bat, простой)
formats.ts
fortune.lua
LICENSE — MIT, savsis
```
## как собрать установщик самому
1. поставь python 3.11 embeddable (`python-3.11.9-embed-amd64.zip` с python.org),
включи `import site` в `python311._pth`, добавь строку `Lib\site-packages`,
поставь pip (`get-pip.py`), затем `pip install -r app/requirements.txt`
этим же python'ом.
2. положи скачанный/собранный `ffmpeg.exe`+`ffprobe.exe` в `app/ffmpeg/`.
3. запакуй `python\` и `app\` (портативный питон + приложение) в `payload.zip`
рядом с папкой `installer\`.
4. собери через MSVC:
```
rc.exe /fo installer.res installer.rc
cl.exe /std:c++17 /EHsc /O2 installer.cpp installer.res /Fe:nexdex.space-setup.exe /link shell32.lib ole32.lib
```
`installer.rc` ссылается на `..\payload.zip` и зашивает его прямо в exe
как ресурс (RCDATA) — поэтому результат остаётся нормальным PE-файлом
(в отличие от "приклеивания" zip после exe, что ломает Authenticode-подпись).
5. (опционально) подпиши бесплатным self-signed сертификатом:
```
New-SelfSignedCertificate -Type CodeSigningCert -Subject "CN=savsis" -CertStoreLocation Cert:\CurrentUser\My
signtool sign /sha1 <thumbprint> /fd SHA256 nexdex.space-setup.exe
```
самоподписанный сертификат уберёт "неизвестный автор" в свойствах файла
(Windows покажет CN=savsis), но не уберёт предупреждение SmartScreen —
для этого нужен платный сертификат от доверенного CA.
---
made by savsis with ♥