Add Windows installer packaging (Setup.exe + portable exe)
PyInstaller onedir/onefile specs, Inno Setup script, and GitHub Actions workflow to produce JUC500-Setup-win64.exe and portable builds. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
JUC500 — Windows 11 사용 안내
|
||||
==============================
|
||||
|
||||
1) JUC500 케이블을 연결합니다.
|
||||
2) 공식 j5create Wormhole 소프트웨어가 떠 있으면 종료/제거합니다.
|
||||
3) Zadig(https://zadig.akeo.ie/) 로 Smart Data Link 장치에 WinUSB 를 설치합니다.
|
||||
- Options → List All Devices
|
||||
- Smart Data Link → Interface 5 (Vendor) → WinUSB → Replace Driver
|
||||
- (권장) Interface 1 (CDC Data) 도 WinUSB
|
||||
- Interface 2(Mass Storage)·3·4(HID) 는 그대로 둡니다.
|
||||
4) JUC500.exe 를 실행합니다. 브라우저가 열리면 「연결」을 누릅니다.
|
||||
5) Mac 쪽에서도 같은 프로그램을 실행한 뒤 연결합니다.
|
||||
|
||||
포터블: JUC500-portable.exe 는 설치 없이 실행할 수 있습니다.
|
||||
(같은 WinUSB/libusb 설정이 필요합니다.)
|
||||
@@ -0,0 +1,63 @@
|
||||
# JUC500 Windows 64-bit 설치 (Inno Setup 없이)
|
||||
# PowerShell -ExecutionPolicy Bypass -File install.ps1
|
||||
|
||||
param(
|
||||
[string]$SourceDir = "",
|
||||
[string]$InstallDir = "$env:LOCALAPPDATA\Programs\JUC500"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
if (-not $SourceDir) {
|
||||
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$candidates = @(
|
||||
(Join-Path $here "..\..\dist\JUC500"),
|
||||
(Join-Path $here "JUC500"),
|
||||
(Join-Path (Get-Location) "JUC500"),
|
||||
(Join-Path (Get-Location) "dist\JUC500"),
|
||||
$here
|
||||
)
|
||||
foreach ($c in $candidates) {
|
||||
$exe = Join-Path $c "JUC500.exe"
|
||||
if (Test-Path $exe) { $SourceDir = (Resolve-Path $c).Path; break }
|
||||
}
|
||||
}
|
||||
|
||||
if (-not $SourceDir -or -not (Test-Path (Join-Path $SourceDir "JUC500.exe"))) {
|
||||
Write-Host "JUC500.exe 를 찾을 수 없습니다. SourceDir=$SourceDir" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "==> 설치: $SourceDir -> $InstallDir"
|
||||
New-Item -ItemType Directory -Force -Path $InstallDir | Out-Null
|
||||
|
||||
Get-Process -Name "JUC500","JUC500-portable" -ErrorAction SilentlyContinue |
|
||||
Stop-Process -Force -ErrorAction SilentlyContinue
|
||||
Start-Sleep -Milliseconds 400
|
||||
|
||||
Copy-Item -Path (Join-Path $SourceDir "*") -Destination $InstallDir -Recurse -Force
|
||||
|
||||
$exe = Join-Path $InstallDir "JUC500.exe"
|
||||
|
||||
$startMenu = Join-Path $env:APPDATA "Microsoft\Windows\Start Menu\Programs\JUC500"
|
||||
New-Item -ItemType Directory -Force -Path $startMenu | Out-Null
|
||||
$wsh = New-Object -ComObject WScript.Shell
|
||||
$lnk = $wsh.CreateShortcut((Join-Path $startMenu "JUC500.lnk"))
|
||||
$lnk.TargetPath = $exe
|
||||
$lnk.WorkingDirectory = $InstallDir
|
||||
$lnk.Description = "JUC500 Smart Data Link 파일 전송"
|
||||
$lnk.Save()
|
||||
|
||||
$desk = [Environment]::GetFolderPath("Desktop")
|
||||
$dlnk = $wsh.CreateShortcut((Join-Path $desk "JUC500.lnk"))
|
||||
$dlnk.TargetPath = $exe
|
||||
$dlnk.WorkingDirectory = $InstallDir
|
||||
$dlnk.Save()
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "설치 완료: $InstallDir" -ForegroundColor Green
|
||||
Write-Host "WinUSB(Zadig) 설정이 필요하면 packaging\windows\README-WIN.txt 를 보세요."
|
||||
$launch = Read-Host "지금 실행할까요? (Y/N)"
|
||||
if ($launch -match '^[Yy]') {
|
||||
Start-Process $exe
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
; JUC500 Windows 64-bit installer (Inno Setup 6+)
|
||||
; 빌드: ISCC.exe packaging\windows\juc500.iss
|
||||
|
||||
#define MyAppName "JUC500"
|
||||
#define MyAppVersion "0.1.0"
|
||||
#define MyAppPublisher "juc500"
|
||||
#define MyAppURL "https://github.com"
|
||||
#define MyAppExeName "JUC500.exe"
|
||||
|
||||
[Setup]
|
||||
AppId={{B8D4F0A2-3C5E-4F9B-8D2A-1E6F7B8C9D0E}
|
||||
AppName={#MyAppName}
|
||||
AppVersion={#MyAppVersion}
|
||||
AppPublisher={#MyAppPublisher}
|
||||
AppPublisherURL={#MyAppURL}
|
||||
DefaultDirName={autopf}\{#MyAppName}
|
||||
DefaultGroupName={#MyAppName}
|
||||
DisableProgramGroupPage=yes
|
||||
OutputDir=..\..\dist-windows
|
||||
OutputBaseFilename=JUC500-Setup-win64
|
||||
Compression=lzma
|
||||
SolidCompression=yes
|
||||
WizardStyle=modern
|
||||
ArchitecturesAllowed=x64compatible
|
||||
ArchitecturesInstallIn64BitMode=x64compatible
|
||||
PrivilegesRequired=lowest
|
||||
PrivilegesRequiredOverridesAllowed=dialog
|
||||
UninstallDisplayIcon={app}\{#MyAppExeName}
|
||||
CloseApplications=yes
|
||||
InfoBeforeFile=README-WIN.txt
|
||||
|
||||
[Languages]
|
||||
Name: "korean"; MessagesFile: "compiler:Languages\Korean.isl"
|
||||
Name: "english"; MessagesFile: "compiler:Default.isl"
|
||||
|
||||
[Tasks]
|
||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||
|
||||
[Files]
|
||||
Source: "..\..\dist\JUC500\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "README-WIN.txt"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "zadig-hint.url"; DestDir: "{app}"; Flags: ignoreversion
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||
Name: "{group}\Zadig (WinUSB 설정 안내)"; Filename: "{app}\zadig-hint.url"
|
||||
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
|
||||
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||
Filename: "{app}\README-WIN.txt"; Description: "WinUSB(Zadig) 설정 안내 열기"; Flags: postinstall shellexec skipifsilent unchecked
|
||||
@@ -0,0 +1,5 @@
|
||||
@echo off
|
||||
REM JUC500 — 현재 폴더의 앱을 %LOCALAPPDATA%\Programs\JUC500 에 설치
|
||||
cd /d "%~dp0"
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0install.ps1" -SourceDir "%~dp0"
|
||||
if errorlevel 1 pause
|
||||
@@ -0,0 +1,2 @@
|
||||
[InternetShortcut]
|
||||
URL=https://zadig.akeo.ie/
|
||||
Reference in New Issue
Block a user