Add windows build files

InnoSetup, Pyinstaller, ffmpeg
This commit is contained in:
suika 2021-05-07 17:39:09 +02:00
parent ea42a62a04
commit f6ced0416a
4 changed files with 222 additions and 0 deletions

View File

@ -0,0 +1,69 @@
[Icons]
Name: {group}\hydrus client; Filename: {app}\client.exe; WorkingDir: {app}; Tasks: programgroupicons
Name: {group}\hydrus server; Filename: {app}\server.exe; WorkingDir: {app}; Tasks: programgroupicons
Name: {group}\help; Filename: {app}\help\index.html; WorkingDir: {app}; Tasks: programgroupicons
Name: {group}\uninstall hydrus network; Filename: {uninstallexe}; WorkingDir: {app}; Tasks: programgroupicons; IconFilename: {app}\static\cross.ico
Name: {userdesktop}\hydrus client; Filename: {app}\client.exe; WorkingDir: {app}; Tasks: desktopicons
Name: {userdesktop}\hydrus server; Filename: {app}\server.exe; WorkingDir: {app}; Tasks: desktopicons
[Setup]
InternalCompressLevel=ultra64
OutputDir=dist
OutputBaseFilename=HydrusInstaller
Compression=lzma/ultra64
AppName=Hydrus Network
AppVerName=Hydrus Network
DefaultDirName={sd}\Hydrus Network
DefaultGroupName=Hydrus Network
DisableProgramGroupPage=yes
DisableReadyPage=yes
DisableDirPage=no
ShowLanguageDialog=no
SetupIconFile=hydrus\static\hydrus.ico
Uninstallable=IsComponentSelected('install')
UninstallDisplayIcon={app}\static\hydrus.ico
[Tasks]
Name: desktopicons; Description: Create desktop icons; Flags: unchecked; Components: install
Name: programgroupicons; Description: Create program group icons; Components: install
[Messages]
SelectDirBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse. Databases will be created beneath the install dir, so make sure the hard drive has enough spare space for your purposes and your user has permission to write there! If you install to program files, you'll need to run the programs as administrator!
[Components]
Name: install; Description: Install; Types: install; Flags: fixed
[Types]
Name: install; Description: Install
Name: extract; Description: Extract only
[Run]
Filename: {app}\help\index.html; Description: Open help/getting started guide (highly recommended for new users); Flags: postinstall unchecked shellexec
Filename: {app}\client.exe; Description: Open the client; Flags: postinstall nowait unchecked
[Files]
Source: dist\Hydrus Network\* ; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
[InstallDelete]
Name: {app}\Crypto; Type: filesandordirs; Components: install
Name: {app}\tcl; Type: filesandordirs; Components: install
Name: {app}\tk; Type: filesandordirs; Components: install
Name: {app}\wx; Type: filesandordirs; Components: install
Name: {app}\lz4-3.0.2-py3.7.egg-info; Type: filesandordirs; Components: install
Name: {app}\lz4-2.1.6-py3.6.egg-info; Type: filesandordirs; Components: install
Name: {app}\cryptography-2.9-py3.7.egg-info; Type: filesandordirs; Components: install
Name: {app}\cryptography-2.4.2-py3.6.egg-info; Type: filesandordirs; Components: install
Name: {app}\lib2to3; Type: filesandordirs; Components: install
Name: {app}\mpl-data; Type: filesandordirs; Components: install
Name: {app}\matplotlib; Type: filesandordirs; Components: install
Name: {app}\cryptography; Type: filesandordirs; Components: install
Name: {app}\opencv_ffmpeg344_64.dll; Type: files; Components: install
Name: {app}\opencv_ffmpeg400_64.dll; Type: files; Components: install
Name: {app}\opencv_ffmpeg410_64.dll; Type: files; Components: install
Name: {app}\opencv_videoio_ffmpeg411_64.dll; Type: files; Components: install
Name: {app}\opencv_videoio_ffmpeg412_64.dll; Type: files; Components: install
Name: {app}\opencv_videoio_ffmpeg420_64.dll; Type: files; Components: install
Name: {app}\opencv_videoio_ffmpeg440_64.dll; Type: files; Components: install
Name: {app}\wxmsw30u_core_vc140_x64.dll; Type: files; Components: install
Name: {app}\wxmsw30u_adv_vc140_x64.dll; Type: files; Components: install
Name: {app}\wxbase30u_vc140_x64.dll; Type: files; Components: install
Name: {app}\wxbase30u_net_vc140_x64.dll; Type: files; Components: install
Name: {app}\tk86t.dll; Type: files; Components: install
Name: {app}\tcl86t.dll; Type: files; Components: install
Name: {app}\_tkinter.pyd; Type: files; Components: install
Name: {app}\_yaml.cp36-win_amd64.pyd; Type: files; Components: install
Name: {app}\_yaml.cp37-win_amd64.pyd; Type: files; Components: install
Name: {app}\_cffi_backend.cp36-win_amd64.pyd; Type: files; Components: install
Name: {app}\_distutils_findvs.pyd; Type: files; Components: install

View File

@ -0,0 +1,50 @@
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['hydrus\\client.pyw'],
pathex=['.'],
binaries=[],
datas=[
('hydrus\\bin', 'bin'),
('hydrus\\help', 'help'),
('hydrus\\static', 'static'),
('hydrus\\client.pyw', '.'),
('hydrus\\client.py', '.'),
('hydrus\\server.py', '.'),
('dist\\server\\server.exe*', '.'),
('hydrus\\license.txt', '.'),
('hydrus\\Readme.txt', '.'),
('hydrus\\help my client will not boot.txt', '.'),
('hydrus\\db', 'db')
],
hiddenimports=['hydrus\\server.py'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='client',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=False,
icon='hydrus\\static\\hydrus.ico' )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
upx_exclude=[],
name='Hydrus Network')

View File

@ -0,0 +1,38 @@
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['hydrus\\server.py'],
pathex=['.'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='server',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=False,
icon='hydrus\\static\\hydrus.ico' )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
upx_exclude=[],
name='server')

View File

@ -0,0 +1,65 @@
name: Release
on:
push:
tags:
- 'v*'
jobs:
build-windows:
runs-on: [windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v2
with:
path: hydrus
- uses: FedericoCarboni/setup-ffmpeg@v1
id: setup_ffmpeg
with:
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.8
architecture: x64
- name: Cache Qt
id: cache-qt
uses: actions/cache@v2.1.4
with:
path: Qt
key: ${{ runner.os }}-QtCache
- name: Install Qt
uses: jurplel/install-qt-action@v2
with:
install-deps: true
setup-python: 'false'
modules: qtcharts qtwidgets qtgui qtcore
cached: ${{ steps.cache-qt.outputs.cache-hit }}
- name: Pip Installer
uses: BSFishy/pip-action@v1
with:
packages: pyinstaller
requirements: hydrus\requirements.txt
- name: build with pyinstaller
run: |
move ${{ steps.setup_ffmpeg.outputs.ffmpeg-path }} hydrus\bin\
move hydrus\static\build_files\windows\client-win.spec client-win.spec
move hydrus\static\build_files\windows\server-win.spec server-win.spec
pyinstaller server-win.spec
pyinstaller client-win.spec
dir -r
- name: InnoSetup
run: |
move hydrus\static\build_files\windows\InnoSetup.iss InnoSetup.iss
ISCC.exe InnoSetup.iss
- name: Upload a Build Artifact
uses: actions/upload-artifact@v2
with:
name: Windows-Extract
path: dist\Hydrus Network
- name: Upload a Build Artifact
uses: actions/upload-artifact@v2
with:
name: Windows-Install
path: dist\HydrusInstaller.exe
if-no-files-found: error
retention-days: 2