flutter_distributor icon indicating copy to clipboard operation
flutter_distributor copied to clipboard

Windows inno build failure when using setup_icon_file

Open AminBhst opened this issue 1 year ago • 1 comments

Hello. The setup_icon_file property is nowhere to be found in the documentation but I did find a merge request that added this property. Here is my make_config.yaml

app_id: 5B599538-42B1-4826-A479-AF079F21A65D
publisher: Amin Beheshti
publisher_url: https://github.com/AminBhst/brisk
display_name: Brisk
create_desktop_icon: true
install_dir_name: "{autopf}\\Brisk"
setup_icon_file: assets\\icons\\logo.ico
locales:
  - en

After running the workflow with the setup_icon_file set, it results in a build failure:

 Preparing Setup program executable
   Updating icons (SETUP.E32)
Error on line 15 in D:\a\brisk\brisk\dist\1.4.6+15\brisk-1.4.6+15-windows-setup_exe.iss: The system cannot find the path specified.
Compile aborted.
MakeError
#0      AppPackageMakerExe._make (package:flutter_app_packager/src/makers/exe/app_package_maker_exe.dart:49:7)
<asynchronous suspension>
#1      FlutterDistributor.package (package:flutter_distributor/src/flutter_distributor.dart:182:35)
<asynchronous suspension>
#2      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>

Unhandled exception:
MakeError
#0      AppPackageMakerExe._make (package:flutter_app_packager/src/makers/exe/app_package_maker_exe.dart:49:7)
<asynchronous suspension>
#1      FlutterDistributor.package (package:flutter_distributor/src/flutter_distributor.dart:182:35)
<asynchronous suspension>
#2      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>

The exe is built eventually, however, the file is corrupted as it failed during the build. The crazy thing is that the icon is properly set for the corrupted exe file. It does work fine if I set the path explicitly like this: setup_icon_file: D:\\a\\brisk\\brisk\\assets\\icons\\logo.ico. However, this is obviously not ideal. Is there any way to use ${{ github.workspace }} for flutter distributor?

AminBhst avatar Oct 18 '24 10:10 AminBhst

My current workaround is to add a job step that replaces the icon path to the proper explicit value:

make_config.yaml:

app_id: 5B599538-42B1-4826-A479-AF079F21A65D
publisher: Amin Beheshti
publisher_url: https://github.com/AminBhst/brisk
display_name: Brisk
create_desktop_icon: true
install_dir_name: "{autopf}\\Brisk"
setup_icon_file: PLACEHOLDER_ICON_PATH
locales:
  - en

This step added to the workflow file:

      - name: Set proper icon path
        run: |
          $iconPath = "${{ github.workspace }}\\assets\\icons\\logo.ico"
          (Get-Content windows/packaging/exe/make_config.yaml) -replace 'PLACEHOLDER_ICON_PATH', $iconPath | Set-Content windows/packaging/exe/make_config.yaml

AminBhst avatar Oct 18 '24 11:10 AminBhst