From cf6f59d4f6b8c98ac61f6f291105ccc922b5dac7 Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 20:56:54 -0500 Subject: [PATCH 1/9] Add windows setup --- .github/workflows/publish.yml | 265 +++++++++++++++++++--------------- windows/wispar_setup.iss | 96 ++++++++++++ 2 files changed, 248 insertions(+), 113 deletions(-) create mode 100644 windows/wispar_setup.iss diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 544ad909..9b278fa4 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,132 +4,170 @@ on: workflow_dispatch: jobs: - build-android: - name: Build for Android - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - name: Install Ninja - run: sudo apt-get install -y ninja-build - - uses: actions/setup-java@v5 - with: - distribution: 'temurin' - java-version: '21' - - uses: subosito/flutter-action@v2 - with: - channel: 'stable' - - run: flutter pub get - - run: dart run pdfrx:remove_wasm_modules - - name: Patch pdfrx - run: | - PDFRX_PATH=$(find $HOME/.pub-cache -type d -name "pdfrx-*" | head -n 1) - CMAKE_FILE="$PDFRX_PATH/android/CMakeLists.txt" - if [ -f "$CMAKE_FILE" ]; then - sed -i '2i add_link_options("LINKER:--build-id=none")' "$CMAKE_FILE" - echo "Patched CMakeLists.txt in $CMAKE_FILE" - else - echo "CMakeLists.txt not found in expected location" - exit 1 - fi - - name: Decode Keystore - run: | - echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/keystore.jks - - name: Create key.properties - run: | - echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" > android/key.properties - echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties - echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties - echo "storeFile=keystore.jks" >> android/key.properties - - name: Build APK - run: flutter build apk --release - - name: Build appBundle - run: flutter build appbundle - - name: Upload Artifacts - uses: actions/upload-artifact@v6 - with: - name: Releases - path: | - build/app/outputs/flutter-apk/app-release.apk - build/app/outputs/bundle/release/app-release.aab - - name: Create google_service_account.json - run: | - echo "${{ secrets.GOOGLE_SERVICE_ACCOUNT }}" | base64 --decode > android/google_service_account.json - - name: Setup ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.4.7' - bundler-cache: true - working-directory: 'android' - - name: Deploy to Play Store - uses: maierj/fastlane-action@v3.1.0 - with: - lane: deploy - subdirectory: android + # build-android: + # name: Build for Android + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v6 + # - name: Install Ninja + # run: sudo apt-get install -y ninja-build + # - uses: actions/setup-java@v5 + # with: + # distribution: 'temurin' + # java-version: '21' + # - uses: subosito/flutter-action@v2 + # with: + # channel: 'stable' + # - run: flutter pub get + # - run: dart run pdfrx:remove_wasm_modules + # - name: Patch pdfrx + # run: | + # PDFRX_PATH=$(find $HOME/.pub-cache -type d -name "pdfrx-*" | head -n 1) + # CMAKE_FILE="$PDFRX_PATH/android/CMakeLists.txt" + # if [ -f "$CMAKE_FILE" ]; then + # sed -i '2i add_link_options("LINKER:--build-id=none")' "$CMAKE_FILE" + # echo "Patched CMakeLists.txt in $CMAKE_FILE" + # else + # echo "CMakeLists.txt not found in expected location" + # exit 1 + # fi + # - name: Decode Keystore + # run: | + # echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/keystore.jks + # - name: Create key.properties + # run: | + # echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" > android/key.properties + # echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties + # echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties + # echo "storeFile=keystore.jks" >> android/key.properties + # - name: Build APK + # run: flutter build apk --release + # - name: Build appBundle + # run: flutter build appbundle + # - name: Upload Artifacts + # uses: actions/upload-artifact@v6 + # with: + # name: Releases + # path: | + # build/app/outputs/flutter-apk/app-release.apk + # build/app/outputs/bundle/release/app-release.aab + # - name: Create google_service_account.json + # run: | + # echo "${{ secrets.GOOGLE_SERVICE_ACCOUNT }}" | base64 --decode > android/google_service_account.json + # - name: Setup ruby + # uses: ruby/setup-ruby@v1 + # with: + # ruby-version: '3.4.7' + # bundler-cache: true + # working-directory: 'android' + # - name: Deploy to Play Store + # uses: maierj/fastlane-action@v3.1.0 + # with: + # lane: deploy + # subdirectory: android + + # build-macos: + # name: Build for macOS + # runs-on: macos-15 + # steps: + # - uses: actions/checkout@v6 + # - uses: maxim-lobanov/setup-xcode@v1 + # with: + # xcode-version: latest-stable + # - uses: subosito/flutter-action@v2 + # with: + # channel: 'stable' + # - run: flutter pub get + # - run: flutter build macos --release + # - name: Codesign executable + # env: + # MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} + # MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} + # KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} + # MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} + # run: | + # echo "$MACOS_CERTIFICATE" | base64 --decode > certificate.p12 + # security create-keychain -p $KEYCHAIN_PASSWORD build.keychain + # security default-keychain -s build.keychain + # security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain + # security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign + # security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain + # security find-identity + # /usr/bin/codesign --force --deep --options runtime -s "$MACOS_SIGN_IDENTITY" build/macos/Build/Products/Release/Wispar.app + # /usr/bin/codesign --verify --deep --strict --verbose=2 build/macos/Build/Products/Release/Wispar.app + # - name: Notarize app + # env: + # APPLE_ID: ${{ secrets.APPLE_ID }} + # APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + # uses: lando/notarize-action@v2 + # with: + # product-path: "build/macos/Build/Products/Release/Wispar.app" + # appstore-connect-username: ${{ secrets.APPLE_ID }} + # appstore-connect-password: ${{ secrets.APPLE_PASSWORD }} + # appstore-connect-team-id: ${{ secrets.APPLE_TEAM_ID }} + # - name: Staple notarization + # run: | + # xcrun stapler staple build/macos/Build/Products/Release/Wispar.app + # - name: Create dmg + # env: + # MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} + # run: | + # brew install create-dmg + # create-dmg \ + # --volname "Wispar" \ + # --window-size 800 529 \ + # --icon-size 130 \ + # --app-drop-link 540 250 \ + # "Wispar.dmg" \ + # build/macos/Build/Products/Release/Wispar.app + # /usr/bin/codesign --force -s "$MACOS_SIGN_IDENTITY" Wispar.dmg + # - uses: actions/upload-artifact@v6 + # with: + # name: wispar-macos-dmg + # path: Wispar.dmg - build-macos: - name: Build for macOS - runs-on: macos-15 + build-windows: + name: Build for Windows + runs-on: windows-latest steps: - uses: actions/checkout@v6 - - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable - - uses: subosito/flutter-action@v2 + - name: Setup Flutter + uses: subosito/flutter-action@v2 with: channel: 'stable' - - run: flutter pub get - - run: flutter build macos --release - - name: Codesign executable - env: - MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} - MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} - KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} - MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} + - name: Flutter pub get + run: flutter pub get + - name: Build Windows release + run: flutter build windows --release + - name: Copy required DLLs + shell: powershell run: | - echo "$MACOS_CERTIFICATE" | base64 --decode > certificate.p12 - security create-keychain -p $KEYCHAIN_PASSWORD build.keychain - security default-keychain -s build.keychain - security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain - security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - security find-identity - /usr/bin/codesign --force --deep --options runtime -s "$MACOS_SIGN_IDENTITY" build/macos/Build/Products/Release/Wispar.app - /usr/bin/codesign --verify --deep --strict --verbose=2 build/macos/Build/Products/Release/Wispar.app - - name: Notarize app - env: - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - uses: lando/notarize-action@v2 - with: - product-path: "build/macos/Build/Products/Release/Wispar.app" - appstore-connect-username: ${{ secrets.APPLE_ID }} - appstore-connect-password: ${{ secrets.APPLE_PASSWORD }} - appstore-connect-team-id: ${{ secrets.APPLE_TEAM_ID }} - - name: Staple notarization + Copy-Item "C:\Windows\System32\msvcp140.dll" -Destination ".\build\windows\runner\Release\" + Copy-Item "C:\Windows\System32\msvcp140_1.dll" -Destination ".\build\windows\runner\Release\" + Copy-Item "C:\Windows\System32\msvcp140_2.dll" -Destination ".\build\windows\runner\Release\" + Copy-Item "C:\Windows\System32\vcruntime140.dll" -Destination ".\build\windows\runner\Release\" + Copy-Item "C:\Windows\System32\vcruntime140_1.dll" -Destination ".\build\windows\runner\Release\" + - name: Install Inno Setup + shell: powershell run: | - xcrun stapler staple build/macos/Build/Products/Release/Wispar.app - - name: Create dmg - env: - MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} + choco install innosetup -y + refreshenv + - name: Create Windows installer + shell: powershell run: | - brew install create-dmg - create-dmg \ - --volname "Wispar" \ - --window-size 800 529 \ - --icon-size 130 \ - --app-drop-link 540 250 \ - "Wispar.dmg" \ - build/macos/Build/Products/Release/Wispar.app - /usr/bin/codesign --force -s "$MACOS_SIGN_IDENTITY" Wispar.dmg - - uses: actions/upload-artifact@v6 + $issPath = ".\windows\wispar_setup.iss" + & "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" $issPath + - name: Upload Windows installer + uses: actions/upload-artifact@v6 with: - name: wispar-macos-dmg - path: Wispar.dmg + name: wispar-windows-installer + path: windows\output\wispar_setup.exe create-release: name: Create GitHub Release runs-on: ubuntu-latest - needs: [build-android, build-macos] + #needs: [build-android, build-macos, build-windows] + needs: [build-windows] steps: - uses: actions/checkout@v6 - name: Download Android artifacts @@ -154,6 +192,7 @@ jobs: android-artifacts/app-release.apk, android-artifacts/app-release.aab, macos-artifacts/Wispar.dmg + windows-artifacts/wispar_setup.exe tag: v${{ env.VERSION }} token: ${{ secrets.TOKEN }} draft: true diff --git a/windows/wispar_setup.iss b/windows/wispar_setup.iss new file mode 100644 index 00000000..20328106 --- /dev/null +++ b/windows/wispar_setup.iss @@ -0,0 +1,96 @@ +#define MyAppName "Wispar" +#define MyAppVersion "0.0.0+0" +#define MyAppPublisher "Scriptbash" +#define MyAppURL "https://wispar.app" +#define MyAppSupportURL "https://github.com/Scriptbash/Wispar/issues" +#define MyAppExeName "wispar.exe" + +[Setup] +AppId={{2515FBD1-05EF-45BA-B7AA-0FF2319A1DEE} +AppName={#MyAppName} +AppVersion={#MyAppVersion} +;AppVerName={#MyAppName} {#MyAppVersion} +AppPublisher={#MyAppPublisher} +AppPublisherURL={#MyAppURL} +AppSupportURL={#MyAppSupportURL} +AppUpdatesURL={#MyAppURL} +DefaultDirName={autopf}\{#MyAppName} +UninstallDisplayIcon={app}\{#MyAppExeName} +; "ArchitecturesAllowed=x64compatible" specifies that Setup cannot run +; on anything but x64 and Windows 11 on Arm. +ArchitecturesAllowed=x64compatible +; "ArchitecturesInstallIn64BitMode=x64compatible" requests that the +; install be done in "64-bit mode" on x64 or Windows 11 on Arm, +; meaning it should use the native 64-bit Program Files directory and +; the 64-bit view of the registry. +ArchitecturesInstallIn64BitMode=x64compatible +DisableProgramGroupPage=yes +LicenseFile=../../LICENSE +; Uncomment the following line to run in non administrative install mode (install for current user only). +;PrivilegesRequired=lowest +PrivilegesRequiredOverridesAllowed=dialog +OutputDir=output +OutputBaseFilename=wispar_setup +SetupIconFile=../../website/static/img/favicon.ico +SolidCompression=yes +WizardStyle=modern + +[Languages] +Name: "english"; MessagesFile: "compiler:Default.isl" +Name: "arabic"; MessagesFile: "compiler:Languages\Arabic.isl" +Name: "armenian"; MessagesFile: "compiler:Languages\Armenian.isl" +Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl" +Name: "bulgarian"; MessagesFile: "compiler:Languages\Bulgarian.isl" +Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl" +Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl" +Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl" +Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl" +Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl" +Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl" +Name: "french"; MessagesFile: "compiler:Languages\French.isl" +Name: "german"; MessagesFile: "compiler:Languages\German.isl" +Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl" +Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl" +Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl" +Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl" +Name: "korean"; MessagesFile: "compiler:Languages\Korean.isl" +Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl" +Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl" +Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl" +Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl" +Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl" +Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl" +Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl" +Name: "swedish"; MessagesFile: "compiler:Languages\Swedish.isl" +Name: "tamil"; MessagesFile: "compiler:Languages\Tamil.isl" +Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl" +Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl" + +[Tasks] +Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked + +[Files] +Source: "../../build/windows/runner/Release/{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/flutter_inappwebview_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/flutter_local_notifications_windows.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/flutter_windows.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/msvcp140.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/msvcp140_1.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/msvcp140_2.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/pdfium.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/pdfrx.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/permission_handler_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/share_plus_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/url_launcher_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/vcruntime140.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/vcruntime140_1.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/WebView2Loader.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/runner/Release/data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs createallsubdirs + +[Icons] +Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" +Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon + +[Run] +Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent + From d0f284152c2f536d904ac4ed15b6e1a5265fe592 Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 21:12:56 -0500 Subject: [PATCH 2/9] path fixes --- .github/workflows/publish.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9b278fa4..18ea818a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -142,11 +142,11 @@ jobs: - name: Copy required DLLs shell: powershell run: | - Copy-Item "C:\Windows\System32\msvcp140.dll" -Destination ".\build\windows\runner\Release\" - Copy-Item "C:\Windows\System32\msvcp140_1.dll" -Destination ".\build\windows\runner\Release\" - Copy-Item "C:\Windows\System32\msvcp140_2.dll" -Destination ".\build\windows\runner\Release\" - Copy-Item "C:\Windows\System32\vcruntime140.dll" -Destination ".\build\windows\runner\Release\" - Copy-Item "C:\Windows\System32\vcruntime140_1.dll" -Destination ".\build\windows\runner\Release\" + Copy-Item "C:\Windows\System32\msvcp140.dll" -Destination ".\build\windows\x64\Release\" + Copy-Item "C:\Windows\System32\msvcp140_1.dll" -Destination ".\build\windows\x64\Release\" + Copy-Item "C:\Windows\System32\msvcp140_2.dll" -Destination ".\build\windows\x64\Release\" + Copy-Item "C:\Windows\System32\vcruntime140.dll" -Destination ".\build\windows\x64\Release\" + Copy-Item "C:\Windows\System32\vcruntime140_1.dll" -Destination ".\build\windows\x64\Release\" - name: Install Inno Setup shell: powershell run: | @@ -160,7 +160,7 @@ jobs: - name: Upload Windows installer uses: actions/upload-artifact@v6 with: - name: wispar-windows-installer + name: windows-artifacts path: windows\output\wispar_setup.exe create-release: @@ -180,6 +180,11 @@ jobs: with: name: wispar-macos-dmg path: macos-artifacts + - name: Download Windows artifact + uses: actions/download-artifact@v6 + with: + name: windows-artifacts + path: windows-artifacts - name: Extract version from pubspec.yaml id: extract_version run: | @@ -191,7 +196,7 @@ jobs: artifacts: | android-artifacts/app-release.apk, android-artifacts/app-release.aab, - macos-artifacts/Wispar.dmg + macos-artifacts/Wispar.dmg, windows-artifacts/wispar_setup.exe tag: v${{ env.VERSION }} token: ${{ secrets.TOKEN }} From 6fbdb71fe14f2add042411cfb2a897d8cffc89ad Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 21:27:05 -0500 Subject: [PATCH 3/9] fix dll destination paths --- .github/workflows/publish.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 18ea818a..f80a8eae 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -142,11 +142,11 @@ jobs: - name: Copy required DLLs shell: powershell run: | - Copy-Item "C:\Windows\System32\msvcp140.dll" -Destination ".\build\windows\x64\Release\" - Copy-Item "C:\Windows\System32\msvcp140_1.dll" -Destination ".\build\windows\x64\Release\" - Copy-Item "C:\Windows\System32\msvcp140_2.dll" -Destination ".\build\windows\x64\Release\" - Copy-Item "C:\Windows\System32\vcruntime140.dll" -Destination ".\build\windows\x64\Release\" - Copy-Item "C:\Windows\System32\vcruntime140_1.dll" -Destination ".\build\windows\x64\Release\" + Copy-Item "C:\Windows\System32\msvcp140.dll" -Destination ".\build\windows\x64\runner\Release\" + Copy-Item "C:\Windows\System32\msvcp140_1.dll" -Destination ".\build\windows\x64\runner\Release\" + Copy-Item "C:\Windows\System32\msvcp140_2.dll" -Destination ".\build\windows\x64\runner\Release\" + Copy-Item "C:\Windows\System32\vcruntime140.dll" -Destination ".\build\windows\x64\runner\Release\" + Copy-Item "C:\Windows\System32\vcruntime140_1.dll" -Destination ".\build\windows\x64\runner\Release\" - name: Install Inno Setup shell: powershell run: | From 5bc0679775c164917eb8fd9de503206335fe488e Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 21:42:12 -0500 Subject: [PATCH 4/9] fix paths in iss script --- windows/wispar_setup.iss | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/windows/wispar_setup.iss b/windows/wispar_setup.iss index 20328106..bdf32914 100644 --- a/windows/wispar_setup.iss +++ b/windows/wispar_setup.iss @@ -25,13 +25,13 @@ ArchitecturesAllowed=x64compatible ; the 64-bit view of the registry. ArchitecturesInstallIn64BitMode=x64compatible DisableProgramGroupPage=yes -LicenseFile=../../LICENSE +LicenseFile=../LICENSE ; Uncomment the following line to run in non administrative install mode (install for current user only). ;PrivilegesRequired=lowest PrivilegesRequiredOverridesAllowed=dialog OutputDir=output OutputBaseFilename=wispar_setup -SetupIconFile=../../website/static/img/favicon.ico +SetupIconFile=../website/static/img/favicon.ico SolidCompression=yes WizardStyle=modern @@ -70,22 +70,22 @@ Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl" Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] -Source: "../../build/windows/runner/Release/{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/flutter_inappwebview_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/flutter_local_notifications_windows.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/flutter_windows.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/msvcp140.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/msvcp140_1.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/msvcp140_2.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/pdfium.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/pdfrx.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/permission_handler_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/share_plus_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/url_launcher_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/vcruntime140.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/vcruntime140_1.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/WebView2Loader.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/runner/Release/data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "../../build/windows/x64/runner/Release/{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/flutter_inappwebview_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/flutter_local_notifications_windows.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/flutter_windows.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/msvcp140.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/msvcp140_1.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/msvcp140_2.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/pdfium.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/pdfrx.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/permission_handler_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/share_plus_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/url_launcher_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/vcruntime140.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/vcruntime140_1.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/WebView2Loader.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../../build/windows/x64/runner/Release/data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs createallsubdirs [Icons] Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" From 2e400eecbacef73f3809e0e09b4e30a5a671b203 Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 21:56:51 -0500 Subject: [PATCH 5/9] more path fixes --- windows/wispar_setup.iss | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/windows/wispar_setup.iss b/windows/wispar_setup.iss index bdf32914..aafa4383 100644 --- a/windows/wispar_setup.iss +++ b/windows/wispar_setup.iss @@ -70,22 +70,22 @@ Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl" Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files] -Source: "../../build/windows/x64/runner/Release/{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/flutter_inappwebview_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/flutter_local_notifications_windows.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/flutter_windows.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/msvcp140.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/msvcp140_1.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/msvcp140_2.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/pdfium.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/pdfrx.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/permission_handler_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/share_plus_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/url_launcher_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/vcruntime140.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/vcruntime140_1.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/WebView2Loader.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "../../build/windows/x64/runner/Release/data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "../build/windows/x64/runner/Release/{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/flutter_inappwebview_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/flutter_local_notifications_windows.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/flutter_windows.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/msvcp140.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/msvcp140_1.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/msvcp140_2.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/pdfium.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/pdfrx.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/permission_handler_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/share_plus_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/url_launcher_windows_plugin.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/vcruntime140.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/vcruntime140_1.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/WebView2Loader.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "../build/windows/x64/runner/Release/data\*"; DestDir: "{app}\data"; Flags: ignoreversion recursesubdirs createallsubdirs [Icons] Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" From 4b700deb1f2956d97f6a649e7dabfa28c113a6e4 Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 22:10:22 -0500 Subject: [PATCH 6/9] uncomment android and macos --- .github/workflows/publish.yml | 240 +++++++++++++++++----------------- 1 file changed, 120 insertions(+), 120 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f80a8eae..da252bdc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,127 +4,127 @@ on: workflow_dispatch: jobs: - # build-android: - # name: Build for Android - # runs-on: ubuntu-latest - # steps: - # - uses: actions/checkout@v6 - # - name: Install Ninja - # run: sudo apt-get install -y ninja-build - # - uses: actions/setup-java@v5 - # with: - # distribution: 'temurin' - # java-version: '21' - # - uses: subosito/flutter-action@v2 - # with: - # channel: 'stable' - # - run: flutter pub get - # - run: dart run pdfrx:remove_wasm_modules - # - name: Patch pdfrx - # run: | - # PDFRX_PATH=$(find $HOME/.pub-cache -type d -name "pdfrx-*" | head -n 1) - # CMAKE_FILE="$PDFRX_PATH/android/CMakeLists.txt" - # if [ -f "$CMAKE_FILE" ]; then - # sed -i '2i add_link_options("LINKER:--build-id=none")' "$CMAKE_FILE" - # echo "Patched CMakeLists.txt in $CMAKE_FILE" - # else - # echo "CMakeLists.txt not found in expected location" - # exit 1 - # fi - # - name: Decode Keystore - # run: | - # echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/keystore.jks - # - name: Create key.properties - # run: | - # echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" > android/key.properties - # echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties - # echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties - # echo "storeFile=keystore.jks" >> android/key.properties - # - name: Build APK - # run: flutter build apk --release - # - name: Build appBundle - # run: flutter build appbundle - # - name: Upload Artifacts - # uses: actions/upload-artifact@v6 - # with: - # name: Releases - # path: | - # build/app/outputs/flutter-apk/app-release.apk - # build/app/outputs/bundle/release/app-release.aab - # - name: Create google_service_account.json - # run: | - # echo "${{ secrets.GOOGLE_SERVICE_ACCOUNT }}" | base64 --decode > android/google_service_account.json - # - name: Setup ruby - # uses: ruby/setup-ruby@v1 - # with: - # ruby-version: '3.4.7' - # bundler-cache: true - # working-directory: 'android' - # - name: Deploy to Play Store - # uses: maierj/fastlane-action@v3.1.0 - # with: - # lane: deploy - # subdirectory: android + build-android: + name: Build for Android + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - name: Install Ninja + run: sudo apt-get install -y ninja-build + - uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '21' + - uses: subosito/flutter-action@v2 + with: + channel: 'stable' + - run: flutter pub get + - run: dart run pdfrx:remove_wasm_modules + - name: Patch pdfrx + run: | + PDFRX_PATH=$(find $HOME/.pub-cache -type d -name "pdfrx-*" | head -n 1) + CMAKE_FILE="$PDFRX_PATH/android/CMakeLists.txt" + if [ -f "$CMAKE_FILE" ]; then + sed -i '2i add_link_options("LINKER:--build-id=none")' "$CMAKE_FILE" + echo "Patched CMakeLists.txt in $CMAKE_FILE" + else + echo "CMakeLists.txt not found in expected location" + exit 1 + fi + - name: Decode Keystore + run: | + echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/keystore.jks + - name: Create key.properties + run: | + echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" > android/key.properties + echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties + echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties + echo "storeFile=keystore.jks" >> android/key.properties + - name: Build APK + run: flutter build apk --release + - name: Build appBundle + run: flutter build appbundle + - name: Upload Artifacts + uses: actions/upload-artifact@v6 + with: + name: Releases + path: | + build/app/outputs/flutter-apk/app-release.apk + build/app/outputs/bundle/release/app-release.aab + - name: Create google_service_account.json + run: | + echo "${{ secrets.GOOGLE_SERVICE_ACCOUNT }}" | base64 --decode > android/google_service_account.json + - name: Setup ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.4.7' + bundler-cache: true + working-directory: 'android' + - name: Deploy to Play Store + uses: maierj/fastlane-action@v3.1.0 + with: + lane: deploy + subdirectory: android - # build-macos: - # name: Build for macOS - # runs-on: macos-15 - # steps: - # - uses: actions/checkout@v6 - # - uses: maxim-lobanov/setup-xcode@v1 - # with: - # xcode-version: latest-stable - # - uses: subosito/flutter-action@v2 - # with: - # channel: 'stable' - # - run: flutter pub get - # - run: flutter build macos --release - # - name: Codesign executable - # env: - # MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} - # MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} - # KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} - # MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} - # run: | - # echo "$MACOS_CERTIFICATE" | base64 --decode > certificate.p12 - # security create-keychain -p $KEYCHAIN_PASSWORD build.keychain - # security default-keychain -s build.keychain - # security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain - # security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign - # security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain - # security find-identity - # /usr/bin/codesign --force --deep --options runtime -s "$MACOS_SIGN_IDENTITY" build/macos/Build/Products/Release/Wispar.app - # /usr/bin/codesign --verify --deep --strict --verbose=2 build/macos/Build/Products/Release/Wispar.app - # - name: Notarize app - # env: - # APPLE_ID: ${{ secrets.APPLE_ID }} - # APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - # uses: lando/notarize-action@v2 - # with: - # product-path: "build/macos/Build/Products/Release/Wispar.app" - # appstore-connect-username: ${{ secrets.APPLE_ID }} - # appstore-connect-password: ${{ secrets.APPLE_PASSWORD }} - # appstore-connect-team-id: ${{ secrets.APPLE_TEAM_ID }} - # - name: Staple notarization - # run: | - # xcrun stapler staple build/macos/Build/Products/Release/Wispar.app - # - name: Create dmg - # env: - # MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} - # run: | - # brew install create-dmg - # create-dmg \ - # --volname "Wispar" \ - # --window-size 800 529 \ - # --icon-size 130 \ - # --app-drop-link 540 250 \ - # "Wispar.dmg" \ - # build/macos/Build/Products/Release/Wispar.app - # /usr/bin/codesign --force -s "$MACOS_SIGN_IDENTITY" Wispar.dmg - # - uses: actions/upload-artifact@v6 - # with: - # name: wispar-macos-dmg - # path: Wispar.dmg + build-macos: + name: Build for macOS + runs-on: macos-15 + steps: + - uses: actions/checkout@v6 + - uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + - uses: subosito/flutter-action@v2 + with: + channel: 'stable' + - run: flutter pub get + - run: flutter build macos --release + - name: Codesign executable + env: + MACOS_CERTIFICATE: ${{ secrets.MACOS_CERTIFICATE }} + MACOS_CERTIFICATE_PWD: ${{ secrets.MACOS_CERTIFICATE_PWD }} + KEYCHAIN_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_PASSWORD }} + MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} + run: | + echo "$MACOS_CERTIFICATE" | base64 --decode > certificate.p12 + security create-keychain -p $KEYCHAIN_PASSWORD build.keychain + security default-keychain -s build.keychain + security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain + security import certificate.p12 -k build.keychain -P $MACOS_CERTIFICATE_PWD -T /usr/bin/codesign + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain + security find-identity + /usr/bin/codesign --force --deep --options runtime -s "$MACOS_SIGN_IDENTITY" build/macos/Build/Products/Release/Wispar.app + /usr/bin/codesign --verify --deep --strict --verbose=2 build/macos/Build/Products/Release/Wispar.app + - name: Notarize app + env: + APPLE_ID: ${{ secrets.APPLE_ID }} + APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} + uses: lando/notarize-action@v2 + with: + product-path: "build/macos/Build/Products/Release/Wispar.app" + appstore-connect-username: ${{ secrets.APPLE_ID }} + appstore-connect-password: ${{ secrets.APPLE_PASSWORD }} + appstore-connect-team-id: ${{ secrets.APPLE_TEAM_ID }} + - name: Staple notarization + run: | + xcrun stapler staple build/macos/Build/Products/Release/Wispar.app + - name: Create dmg + env: + MACOS_SIGN_IDENTITY: ${{ secrets.MACOS_SIGN_IDENTITY }} + run: | + brew install create-dmg + create-dmg \ + --volname "Wispar" \ + --window-size 800 529 \ + --icon-size 130 \ + --app-drop-link 540 250 \ + "Wispar.dmg" \ + build/macos/Build/Products/Release/Wispar.app + /usr/bin/codesign --force -s "$MACOS_SIGN_IDENTITY" Wispar.dmg + - uses: actions/upload-artifact@v6 + with: + name: wispar-macos-dmg + path: Wispar.dmg build-windows: name: Build for Windows From 02d83d643a6b7cd353cdf48d1ae425de1f204ce4 Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 22:13:04 -0500 Subject: [PATCH 7/9] comment playstore --- .github/workflows/publish.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index da252bdc..4c69d038 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -60,11 +60,11 @@ jobs: ruby-version: '3.4.7' bundler-cache: true working-directory: 'android' - - name: Deploy to Play Store - uses: maierj/fastlane-action@v3.1.0 - with: - lane: deploy - subdirectory: android + # - name: Deploy to Play Store + # uses: maierj/fastlane-action@v3.1.0 + # with: + # lane: deploy + # subdirectory: android build-macos: name: Build for macOS From 9c6dd61bd136249c35b85e368ad1a0612f3592e6 Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 22:14:03 -0500 Subject: [PATCH 8/9] re-enable android and macos --- .github/workflows/publish.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4c69d038..87ac200c 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -166,8 +166,7 @@ jobs: create-release: name: Create GitHub Release runs-on: ubuntu-latest - #needs: [build-android, build-macos, build-windows] - needs: [build-windows] + needs: [build-android, build-macos, build-windows] steps: - uses: actions/checkout@v6 - name: Download Android artifacts From 678829d2d7a7302ac3696e1ae2951ef8fc0b5b17 Mon Sep 17 00:00:00 2001 From: Scriptbash <98601298+Scriptbash@users.noreply.github.com> Date: Tue, 6 Jan 2026 22:38:55 -0500 Subject: [PATCH 9/9] re-enable fastlane --- .github/workflows/publish.yml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 87ac200c..8608ad0d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -44,13 +44,16 @@ jobs: run: flutter build apk --release - name: Build appBundle run: flutter build appbundle + - name: Prepare Android artifacts + run: | + mkdir -p release-artifacts + cp build/app/outputs/flutter-apk/app-release.apk release-artifacts/ + cp build/app/outputs/bundle/release/app-release.aab release-artifacts/ - name: Upload Artifacts uses: actions/upload-artifact@v6 with: - name: Releases - path: | - build/app/outputs/flutter-apk/app-release.apk - build/app/outputs/bundle/release/app-release.aab + name: android-artifacts + path: release-artifacts/ - name: Create google_service_account.json run: | echo "${{ secrets.GOOGLE_SERVICE_ACCOUNT }}" | base64 --decode > android/google_service_account.json @@ -60,11 +63,11 @@ jobs: ruby-version: '3.4.7' bundler-cache: true working-directory: 'android' - # - name: Deploy to Play Store - # uses: maierj/fastlane-action@v3.1.0 - # with: - # lane: deploy - # subdirectory: android + - name: Deploy to Play Store + uses: maierj/fastlane-action@v3.1.0 + with: + lane: deploy + subdirectory: android build-macos: name: Build for macOS @@ -172,7 +175,7 @@ jobs: - name: Download Android artifacts uses: actions/download-artifact@v6 with: - name: Releases + name: android-artifacts path: android-artifacts - name: Download macOS artifact uses: actions/download-artifact@v6