Skip to content

Commit

Permalink
Merge pull request #59 from link00000000/inno-setup
Browse files Browse the repository at this point in the history
  • Loading branch information
link00000000 authored Apr 25, 2021
2 parents 85cfb43 + c6abfec commit 1ae341a
Show file tree
Hide file tree
Showing 6 changed files with 162 additions and 27 deletions.
52 changes: 52 additions & 0 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,26 @@ jobs:
name: mimic-win64
path: .\dist\mimic\*

- name: Get tag name
uses: olegtarasov/get-tag@v2.1
id: tagName

- name: Create installer with commit hash as version (only when no tag)
if: steps.tagName.outputs.tag == ''
run: |
pipenv run installer /DApplicationVersion=commit ${{ github.sha }} /DOutputFilename=setup-mimic-win64
- name: Create installer with tag as version (only when tag)
if: steps.tagName.outputs.tag != ''
run: |
pipenv run installer /DApplicationVersion=${{ steps.tagName.outputs.tag }} /DOutputFilename=setup-mimic-win64
- name: Create installer artifact
uses: actions/upload-artifact@v2
with:
name: setup-mimic-win64
path: .\dist\setup-mimic-win64.exe

debug-build:
name: Debug Build
runs-on: windows-2019
Expand Down Expand Up @@ -65,6 +85,26 @@ jobs:
name: mimic-win64-debug
path: .\dist\mimic\*

- name: Get tag name
uses: olegtarasov/get-tag@v2.1
id: tagName

- name: Create installer with commit hash as version (only when no tag)
if: steps.tagName.outputs.tag == ''
run: |
pipenv run installer /DApplicationVersion="commit ${{ github.sha }}" /DOutputFilename=setup-mimic-win64-debug
- name: Create installer with tag as version (only when tag)
if: steps.tagName.outputs.tag != ''
run: |
pipenv run installer /DApplicationVersion=${{ steps.tagName.outputs.tag }} /DOutputFilename=setup-mimic-win64-debug
- name: Create installer artifact
uses: actions/upload-artifact@v2
with:
name: setup-mimic-win64-debug
path: .\dist\setup-mimic-win64-debug.exe

create-pre-release:
name: Create Pre-release
runs-on: windows-2019
Expand Down Expand Up @@ -92,12 +132,24 @@ jobs:
run: |
7z a -tzip mimic-win64-debug.zip .\mimic-win64-debug\*
- name: Download installer artifact
uses: actions/download-artifact@v2
with:
name: setup-mimic-win64

- name: Download debug installer artifact
uses: actions/download-artifact@v2
with:
name: setup-mimic-win64-debug

- name: Create pre-release
uses: softprops/action-gh-release@v1
with:
files: |
mimic-win64.zip
mimic-win64-debug.zip
setup-mimic-win64.exe
setup-mimic-win64-debug.exe
prerelease: yes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18 changes: 18 additions & 0 deletions .scripts/build_installer.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
$url = "https://github.com/CatxFish/obs-virtual-cam/releases/download/2.0.4/OBS-VirtualCam2.0.4.zip"
$filename = Split-Path $url -leaf
$filename_no_ext = Split-Path $url -leafbase
$out_dir = ".\build"
$dll_name = "obs-virtualsource.dll"

Write-Host "Creating build directory if it does not already exist"
$null = New-Item $out_dir -ItemType Directory -Force

Write-Host "Downloading $filename_no_ext from $url"
$ProgressPreference = 'SilentlyContinue' # Hide download progress bar
Invoke-WebRequest $url -OutFile "$out_dir\$filename"
$ProgressPreference = 'Continue' # Restore download progress bar

Write-Host "Extracting archive $out_dir\$filename"
7z.exe x -r -aoa -o"$out_dir" "$out_dir\$filename"

iscc.exe "setup.iss" @args
9 changes: 5 additions & 4 deletions Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,13 @@ python_version = "3.9"
install_dlls = "python .scripts/install_dlls.py"
uninstall_dlls = "python .scripts/uninstall_dlls.py"
start = "python main.py"
dev = "Powershell.exe -File .scripts/dev.ps1" # Requires that nodemon is installed globally, this can be installed with `npm i -g nodemon`
build = "pyinstaller --noconfirm --onedir --windowed --icon \"./assets/favicon.ico\" --name \"mimic\" --add-data \"./assets;.\" --add-data \"./mimic/public;mimic/public/\" --hidden-import \"pkg_resources\" \"./main.py\""
build-debug = "pyinstaller --noconfirm --onedir --console --icon \"./assets/favicon.ico\" --name \"mimic\" --add-data \"./assets;.\" --add-data \"./mimic/public;mimic/public/\" --hidden-import \"pkg_resources\" \"./main.py\""
dev = "pwsh.exe -File .scripts/dev.ps1" # Requires that nodemon is installed globally, this can be installed with `npm i -g nodemon`
build = "pyinstaller --noconfirm --onedir --windowed --icon \"./assets/favicon.ico\" --name \"mimic\" --add-data \"./assets;assets\" --add-data \"./mimic/public;mimic/public/\" --hidden-import \"pkg_resources\" \"./main.py\""
build-debug = "pyinstaller --noconfirm --onedir --console --icon \"./assets/favicon.ico\" --name \"mimic\" --add-data \"./assets;assets\" --add-data \"./mimic/public;mimic/public/\" --hidden-import \"pkg_resources\" \"./main.py\""
installer = "pwsh.exe -File .scripts/build_installer.ps1"
profile = "pwsh.exe -File .scripts/profile.ps1"
lint = "python .scripts/lint.py"
pslint = "Powershell.exe -File .scripts/lint.ps1"
pslint = "pwsh.exe -File .scripts/lint.ps1"
lint-imports = "isort main.py mimic"
lint-code = "autopep8 --in-place --recursive main.py mimic"
lint-type_checking = "mypy main.py mimic --config-file mypy.ini"
Expand Down
19 changes: 0 additions & 19 deletions mimic/Utils/VirtualCam.py

This file was deleted.

13 changes: 9 additions & 4 deletions mimic/WebServer.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@

from mimic.Constants import SLEEP_INTERVAL
from mimic.Pipeable import LogMessage
from mimic.Utils.AppData import mkdir_local_app_data, resolve_local_app_data
from mimic.Utils.Host import resolve_host
from mimic.Utils.SSL import generate_ssl_certs, ssl_certs_generated
from mimic.Utils.Time import RollingTimeout, latency, timestamp
Expand Down Expand Up @@ -271,11 +272,15 @@ async def on_ended():

# Start HTTP server
ssl_context = ssl.SSLContext()
if not ssl_certs_generated("certs/selfsigned.cert", "certs/selfsigned.pem"):
generate_ssl_certs("certs/selfsigned.cert", "certs/selfsigned.pem")

ssl_context.load_cert_chain(
"certs/selfsigned.cert", "certs/selfsigned.pem")
mkdir_local_app_data('certs')
cert_file = resolve_local_app_data('certs', 'selfsigned.cert')
key_file = resolve_local_app_data('certs', 'selfsigned.pem')

if not ssl_certs_generated(cert_file, key_file):
generate_ssl_certs(cert_file, key_file)

ssl_context.load_cert_chain(cert_file, key_file)

app = web.Application(middlewares=[logging_middleware])
app.router.add_get("/", index)
Expand Down
78 changes: 78 additions & 0 deletions setup.iss
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#define ApplicationName "Mimic"
#define ApplicationURL "https://github.com/link00000000/mimic"
#define ApplicationExeName "mimic.exe"

; Override application version with /DApplicationVersion=v1.2.3
#ifndef ApplicationVersion
#define ApplicationVersion "v0.0.0"
#endif

; Override output file name with /DOutputFilename=setup-mimic-win64-debug
#ifndef OutputFilename
#define OutputFilename "setup-mimic-win64"
#endif

[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{4DA90CF3-BA51-422F-A57C-1ABE71E0E802}
AppName={#ApplicationName}
AppVersion={#ApplicationVersion}
AppVerName={#ApplicationName} {#ApplicationVersion}
AppPublisherURL={#ApplicationURL}
AppSupportURL={#ApplicationURL}
AppUpdatesURL={#ApplicationURL}
DefaultDirName={autopf}\{#ApplicationName}
DisableProgramGroupPage=yes
LicenseFile=.\LICENSE
OutputBaseFilename={#OutputFilename}
OutputDir=.\dist
SetupIconFile=.\assets\favicon.ico
PrivilegesRequired=admin
Compression=lzma
SolidCompression=yes
WizardStyle=modern

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
Name: "autostart"; Description: "Start Mimic when Windows starts"; GroupDescription: "Additional Options"; Flags: checkedonce

[Files]
Source: ".\dist\mimic\{#ApplicationExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: ".\dist\mimic\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: ".\build\OBS-VirtualCam\*"; DestDir: "{app}\OBS-VirtualCam"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{autoprograms}\{#ApplicationName}"; Filename: "{app}\{#ApplicationExeName}"
Name: "{autodesktop}\{#ApplicationName}"; Filename: "{app}\{#ApplicationExeName}"; Tasks: desktopicon
Name: "{commonstartup}\{#ApplicationName}"; Filename: "{app}\{#ApplicationExeName}"; Tasks: autostart

[Run]
Filename: "{app}\{#ApplicationExeName}"; Description: "{cm:LaunchProgram,{#StringChange(ApplicationName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
Filename: "{sys}\Regsvr32.exe"; Parameters: "/n /i:1 /s OBS-VirtualCam\bin\32bit\obs-virtualsource.dll"; WorkingDir: "{app}"; StatusMsg: "Registering OBS-VirtualCam 32bit"; Flags: runhidden
Filename: "{sys}\Regsvr32.exe"; Parameters: "/n /i:1 /s OBS-VirtualCam\bin\64bit\obs-virtualsource.dll"; WorkingDir: "{app}"; StatusMsg: "Registering OBS-VirtualCam 64bit"; Flags: runhidden

[UninstallRun]
Filename: "{sys}\Regsvr32.exe"; Parameters: "/u /s OBS-VirtualCam\bin\32bit\obs-virtualsource.dll"; WorkingDir: "{app}"; StatusMsg: "Unregistering OBS-VirtualCam 32bit"; Flags: runhidden
Filename: "{sys}\Regsvr32.exe"; Parameters: "/u /s OBS-VirtualCam\bin\64bit\obs-virtualsource.dll"; WorkingDir: "{app}"; StatusMsg: "Unregistering OBS-VirtualCam 64bit"; Flags: runhidden

[UninstallDelete]
Type: filesandordirs; Name: "{localappdata}/mimic"

; NOTE Setting registry entry cannot be done with [Registry] because it will be
; overwritten when OBS-VirtualCam DLLs are installed
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
begin
Log('CurStepChanged(' + IntToStr(Ord(CurStep)) + ') called')
if CurStep = ssPostInstall then
begin
Log('Writing registry entries')
RegWriteStringValue(
HKEY_CLASSES_ROOT, 'WOW6432Node\CLSID\{860BB310-5D01-11d0-BD3B-00A0C911CE86}\Instance\{27B05C2D-93DC-474A-A5DA-9BBA34CB2A9C}', 'FriendlyName', 'Mimic');
end;
end;

0 comments on commit 1ae341a

Please sign in to comment.