From 4624d8269d3efa259204d8ac78a111ba015a212b Mon Sep 17 00:00:00 2001 From: Daniel Kratzert Date: Fri, 1 Sep 2023 08:05:49 +0200 Subject: [PATCH] Starting new installer --- scripts/create_dist.bat | 62 ++++++++++++++++++++++++++++++++++ scripts/make_win_release.bat | 16 +++++---- scripts/strf-install_win64.iss | 37 +++++++++++++++++--- 3 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 scripts/create_dist.bat diff --git a/scripts/create_dist.bat b/scripts/create_dist.bat new file mode 100644 index 00000000..5deec815 --- /dev/null +++ b/scripts/create_dist.bat @@ -0,0 +1,62 @@ +@echo off + +REM This script builds a working Python environment into ..\dist of the current file location. + +REM Set the Python version here: +set PYTHON_VERSION=3.11.5 + +set PYTHON_URL=https://www.python.org/ftp/python/%PYTHON_VERSION%/python-%PYTHON_VERSION%-embed-amd64.zip + +for %%A in ("%~dp0.") do set "SCRIPT_DIR=%%~fA" +set BUILD_DIR=%SCRIPT_DIR%\..\dist +set PACKAGE_DIR=%BUILD_DIR%\python_dist + + +setlocal enabledelayedexpansion +for %%a in (!PYTHON_VERSION!) do ( + set "NEW_PYTHON_VERSION=%%~na" +) +set "SHORT_PYTHON_VERSION=!NEW_PYTHON_VERSION:.=!" + +mkdir %BUILD_DIR% +cd %BUILD_DIR% + +curl %PYTHON_URL% -o python-%PYTHON_VERSION%.zip + +del /S /Q /F %PACKAGE_DIR%\*.* >NUL +rmdir /s /q %PACKAGE_DIR% +dir "%PACKAGE_DIR%" | findstr /v "\<.*\>" +if not errorlevel 1 ( + echo Directory is not empty. + exit /b +) else ( + echo Package dir is empty +) +mkdir %PACKAGE_DIR% + +tar -xf python-%PYTHON_VERSION%.zip -C %PACKAGE_DIR% +del python-%PYTHON_VERSION%.zip + +echo python%SHORT_PYTHON_VERSION%.zip > %PACKAGE_DIR%\python%SHORT_PYTHON_VERSION%._pth +echo . >> %PACKAGE_DIR%\python%SHORT_PYTHON_VERSION%._pth +echo import site >> %PACKAGE_DIR%\python%SHORT_PYTHON_VERSION%._pth +endlocal + +del vc_redist.x64.exe + +curl -L https://aka.ms/vs/17/release/vc_redist.x64.exe -o vc_redist.x64.exe +rem vc_redist.x64.exe /passive /quiet /install + +cd %PACKAGE_DIR% + +curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py +python get-pip.py +del get-pip.py + +python -m pip install virtualenv +python -m virtualenv venv --clear --no-periodic-update +call venv\Scripts\activate.bat + +call pip install -r %SCRIPT_DIR%\..\requirements.txt + +cd %SCRIPT_DIR%\.. diff --git a/scripts/make_win_release.bat b/scripts/make_win_release.bat index be210498..e8b88a1d 100644 --- a/scripts/make_win_release.bat +++ b/scripts/make_win_release.bat @@ -5,17 +5,19 @@ REM execute me from the main directory rmdir /S dist /Q rmdir /S build /Q -CALL venv\Scripts\activate.bat - rem git restore * rem git switch master rem git pull -venv\Scripts\python.exe -m pip install pip -U -venv\Scripts\pip install -r requirements.txt -U -venv\Scripts\pip install pyinstaller -U -venv\Scripts\pip install -U pyinstaller-hooks-contrib +CALL scripts\create_dist.bat + +CALL venv\Scripts\activate.bat + +rem venv\Scripts\python.exe -m pip install pip -U +rem venv\Scripts\pip install -r requirements.txt -U +rem venv\Scripts\pip install pyinstaller -U +rem venv\Scripts\pip install -U pyinstaller-hooks-contrib CALL venv\Scripts\python.exe scripts\make_win_release.py -rem git restore * \ No newline at end of file +CALL venv\Scripts\deactivate.bat diff --git a/scripts/strf-install_win64.iss b/scripts/strf-install_win64.iss index a7963bf1..0aae02da 100644 --- a/scripts/strf-install_win64.iss +++ b/scripts/strf-install_win64.iss @@ -48,7 +48,6 @@ AlwaysShowComponentsList=False ShowComponentSizes=False SetupIconFile="..\icons\strf.ico" UninstallDisplayIcon={app}\{#MyAppName}.exe -;SignTool=signtool SignTool=sign_sha256 [UninstallRun] @@ -61,10 +60,11 @@ Name: "english"; MessagesFile: "compiler:Default.isl" ;Excludes: "*.pyc" [Run] +Filename: "{app}\vc_redist.x64.exe"; WorkingDir: "{app}"; Parameters: "/passive /norestart" [Icons] +Name: "{group}\{#MyAppName}"; Filename: "{app}\structurefinder.exe"; WorkingDir: "{app}"; IconFilename: "{app}\icons\strf.ico"; Check: IsWin64 Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; IconFilename: "{app}\icons\strf.ico" -Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppName}.exe"; WorkingDir: "{app}"; IconFilename: "{app}\icons\strf.ico"; Check: IsWin64 [UninstallDelete] Type: files; Name: "{app}\*.pyc" @@ -77,12 +77,39 @@ Type: filesandordirs; Name: "{app}\*" [Tasks] [Files] -Source: "..\dist\{#MyAppName}\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs -Source: "{#MyAppName}-crash.txt"; DestDir: "{app}"; Permissions: everyone-full +Source: "..\src\structurefinder\*"; DestDir: "{app}\structurefinder"; Flags: ignoreversion createallsubdirs recursesubdirs +Source: "..\dist\python_dist\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs +Source: "..\icons\*"; DestDir: "{app}"; Flags: ignoreversion createallsubdirs recursesubdirs +Source: "..\structurefinder.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\structurefinder.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "..\vc_redist.x64.exe"; DestDir: "{app}"; Flags: ignoreversion [Dirs] Name: "{app}\displaymol"; Permissions: everyone-full Name: "{app}\gui"; Permissions: everyone-full [Code] - +procedure CurStepChanged(CurStep: TSetupStep); +// This procedure deletes the installer executable when it +// is named 'update-structurefinder.exe' +var + strContent: String; + intErrorCode: Integer; + strSelf_Delete_BAT: String; +begin + // Pos == str.contains(x) + if Pos('update-structurefinder.exe', ExpandConstant('{srcexe}')) > 0 then + begin + if CurStep=ssDone then + begin + strContent := ':try_delete' + #13 + #10 + + 'del "' + ExpandConstant('{srcexe}') + '"' + #13 + #10 + + 'if exist "' + ExpandConstant('{srcexe}') + '" goto try_delete' + #13 + #10 + + 'del %0'; + + strSelf_Delete_BAT := ExtractFilePath(ExpandConstant('{tmp}')) + 'SelfDelete.bat'; + SaveStringToFile(strSelf_Delete_BAT, strContent, False); + Exec(strSelf_Delete_BAT, '', '', SW_HIDE, ewNoWait, intErrorCode); + end; + end; +end;