From cfe9ce2bc984932a79681c3774d043dc2162d89b Mon Sep 17 00:00:00 2001 From: JHubi1 Date: Tue, 27 Aug 2024 23:34:22 +0200 Subject: [PATCH] Unified windows installer, added functionality --- .github/workflows/build.yaml | 2 +- scripts/build.dart | 18 +++--- windows_installer/{arm64.iss => ollama.iss} | 52 ++++++++++++--- windows_installer/x64.iss | 70 --------------------- 4 files changed, 57 insertions(+), 85 deletions(-) rename windows_installer/{arm64.iss => ollama.iss} (56%) delete mode 100644 windows_installer/x64.iss diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f97016e..35daf33 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -88,7 +88,7 @@ jobs: - name: Running installer build uses: Minionguyjpro/Inno-Setup-Action@v1.2.2 with: - path: .\windows_installer\x64.iss + path: .\windows_installer\ollama.iss options: /O+ /dAppVersion=${{ steps.get_flutter_version.outputs.version_number }} - name: Uploading installer uses: actions/upload-artifact@v4 diff --git a/scripts/build.dart b/scripts/build.dart index c4711e8..1586c18 100644 --- a/scripts/build.dart +++ b/scripts/build.dart @@ -42,7 +42,7 @@ void main() async { // await execute( // 'Windows x64 installer', // 'iscc.exe', - // ['windows_installer/x64.iss', '/qp', '/dAppVersion=$version'], + // ['windows_installer/ollama.iss', '/qp', '/dAppVersion=$version'], // " > Inno Setup is not installed. Please install it from https://www.jrsoftware.org/isdl.php#stable\n Then add the Inno Setup directory to your PATH environment variable."); // ---------- @@ -59,7 +59,12 @@ void main() async { // await execute( // 'Windows arm64 installer', // 'iscc.exe', - // ['windows_installer/arm64.iss', '/qp', '/dAppVersion=$version'], + // [ + // 'windows_installer/ollama.iss', + // '/qp', + // '/dAppVersion=$version', + // '/dAppArchitectures=arm64' + // ], // " > Inno Setup is not installed. Please install it from https://www.jrsoftware.org/isdl.php#stable\n Then add the Inno Setup directory to your PATH environment variable."); print('----------'); @@ -73,11 +78,10 @@ void main() async { await outputDir.create(); await copyFile('build\\app\\outputs\\flutter-apk\\app-release.apk', - 'build\\.output\\ollama.apk'); - await copyFile('build\\app\\outputs\\flutter-apk\\app-release.apk.sha1', - 'build\\.output\\ollama.apk.sha1'); - await copyFile('build\\windows\\x64\\runner\\ollama-v$version-x64.exe', - 'build\\.output\\ollama-v$version-x64.exe'); + 'build\\.output\\ollama-android-v$version.apk'); + await copyFile( + 'build\\windows\\x64\\runner\\ollama-windows-x64-v$version.exe', + 'build\\.output\\ollama-windows-x64-v$version.exe'); print('- done'); } catch (_) { print('- failed'); diff --git a/windows_installer/arm64.iss b/windows_installer/ollama.iss similarity index 56% rename from windows_installer/arm64.iss rename to windows_installer/ollama.iss index c1c1122..caf431e 100644 --- a/windows_installer/arm64.iss +++ b/windows_installer/ollama.iss @@ -1,17 +1,28 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -;#define AppVersion "1.0.1" +; Inno Setup script for Ollama App, created by JHubi1 #define AppName "Ollama App" #define AppPublisher "JHubi1" #define AppURL "https://jhubi1.com" #define AppExeName "ollama.exe" -#define AppArchitectures "arm64" + +; #define AppVersion "1.0.1" +; #define AppArchitectures "x64" + +#ifndef AppVersion + #error AppVersion is required +#endif + +#ifndef AppArchitectures + #define AppArchitectures "x64" +#endif [Setup] SourceDir=.. -ArchitecturesAllowed={#AppArchitectures} +#if AppArchitectures == 'x64' + ArchitecturesAllowed=x64compatible +#else + ArchitecturesAllowed={#AppArchitectures} +#endif AppId={{4ACF8C84-5D9B-455C-9FED-93D29E2F71DC} AppName={#AppName} @@ -20,7 +31,7 @@ AppVerName={#AppName} v{#AppVersion} AppPublisher={#AppPublisher} AppPublisherURL={#AppURL} SetupIconFile=windows\runner\resources\app_icon.ico -AppCopyright=© 2024 {#AppPublisher} +AppCopyright=Copyright 2024 {#AppPublisher} UninstallDisplayIcon={app}\{#AppExeName} UninstallDisplayName={#AppName} @@ -67,3 +78,30 @@ Name: "{autodesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: deskto [Run] Filename: "{app}\{#AppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(AppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent +[Code] +function InitializeSetup(): Boolean; +begin + Result := true; + { TODO: Uncoment when arm64 is ready! } + {if (ProcessorArchitecture = paArm64) and (ExpandConstant('{#AppArchitectures}') = 'x64') then + begin + if SuppressibleTaskDialogMsgBox('Architecture Compatibility', 'You are running the x64 version of the installer on an arm64 device. There is an arm64 version avaliable for download. It is recommended to be used. Do you wish to continue?', mbError, MB_YESNO, [SetupMessage(msgButtonYes), SetupMessage(msgButtonNo)], 0, IDNO) = IDNO then + begin + Result := false; + end; + end;} +end; + +procedure CurUninstallStepChanged (CurUninstallStep: TUninstallStep); + var + mres : integer; + begin + case CurUninstallStep of + usPostUninstall: + begin + mres := MsgBox('Do you want to Remove settings?', mbConfirmation, MB_YESNO or MB_DEFBUTTON2) + if mres = IDYES then + DelTree(ExpandConstant('{userappdata}\JHubi1\Ollama App'), True, True, True); + end; + end; +end; diff --git a/windows_installer/x64.iss b/windows_installer/x64.iss deleted file mode 100644 index e8b25c2..0000000 --- a/windows_installer/x64.iss +++ /dev/null @@ -1,70 +0,0 @@ -; Script generated by the Inno Setup Script Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -;#define AppVersion "1.0.1" - -#define AppName "Ollama App" -#define AppPublisher "JHubi1" -#define AppURL "https://jhubi1.com" -#define AppExeName "ollama.exe" -#define AppArchitectures "x64" - -[Setup] -SourceDir=.. -; disabled because arm64 is not yet supported by flutter -;ArchitecturesAllowed={#AppArchitectures} - -AppId={{4ACF8C84-5D9B-455C-9FED-93D29E2F71DC} -AppName={#AppName} -AppVersion={#AppVersion} -AppVerName={#AppName} v{#AppVersion} -AppPublisher={#AppPublisher} -AppPublisherURL={#AppURL} -SetupIconFile=windows\runner\resources\app_icon.ico -AppCopyright=© 2024 {#AppPublisher} - -UninstallDisplayIcon={app}\{#AppExeName} -UninstallDisplayName={#AppName} - -DefaultDirName={autopf}\OllamaApp -OutputDir=build\windows\{#AppArchitectures}\runner -OutputBaseFilename=ollama-windows-{#AppArchitectures}-v{#AppVersion} - -AppSupportURL=https://github.com/JHubi1/ollama-app/issues -AppUpdatesURL=https://github.com/JHubi1/ollama-app/releases - -LicenseFile=windows_installer\docs\license.txt -InfoBeforeFile=windows_installer\docs\before.txt -InfoAfterFile=windows_installer\docs\after.txt - -WizardImageFile=assets\OllamaAppBanner.bmp - -PrivilegesRequiredOverridesAllowed=dialog -;Password=enterPasswordInCaseOfSecretBuild -;Encryption=yes - -DisableWelcomePage=no -DisableProgramGroupPage=yes - -Compression=lzma -SolidCompression=yes -WizardStyle=modern - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" -Name: "german"; MessagesFile: "compiler:Languages\German.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -Source: "build\windows\{#AppArchitectures}\runner\Release\{#AppExeName}"; DestDir: "{app}"; Flags: ignoreversion -Source: "build\windows\{#AppArchitectures}\runner\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs - -[Icons] -Name: "{autoprograms}\{#AppName}"; Filename: "{app}\{#AppExeName}" -Name: "{autodesktop}\{#AppName}"; Filename: "{app}\{#AppExeName}"; Tasks: desktopicon - -[Run] -Filename: "{app}\{#AppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(AppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent -