From 14d6623c13e86975f9842392c85a0757a55583a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20L=C3=BCbke?= <60359335+johannes-luebke@users.noreply.github.com> Date: Thu, 20 Mar 2025 14:46:24 +0100 Subject: [PATCH 1/8] fix: unhandled error in dialogs.go Does lead to deadlocks otherwise --- v3/pkg/application/dialogs.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/v3/pkg/application/dialogs.go b/v3/pkg/application/dialogs.go index 1e52225ce..2c832d5f2 100644 --- a/v3/pkg/application/dialogs.go +++ b/v3/pkg/application/dialogs.go @@ -291,6 +291,9 @@ func (d *OpenFileDialogStruct) PromptForMultipleSelection() ([]string, error) { } selections, err := InvokeSyncWithResultAndError(d.impl.show) + if err != nil { + return nil, err + } var result []string for filename := range selections { From 010100456d884433e446e3ccae133d5e5c064cc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20L=C3=BCbke?= <60359335+johannes-luebke@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:50:24 +0000 Subject: [PATCH 2/8] chore: update changelog --- website/src/pages/changelog.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/website/src/pages/changelog.mdx b/website/src/pages/changelog.mdx index d1b405813..5978d1594 100644 --- a/website/src/pages/changelog.mdx +++ b/website/src/pages/changelog.mdx @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed build issues on Linux for some glibc versions. Fixed in [PR](https://github.com/wailsapp/wails/pull/3545) by @leaanthony. +- Fixed locking issue on Windows when multiselect dialog returns an error. Fixed in [PR](https://github.com/wailsapp/wails/pull/4156) by @johannes-luebke ## v2.9.0 - 2024-06-16 From 471402556bea88387f4540aac6ddfa1bb3213851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20L=C3=BCbke?= <60359335+johannes-luebke@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:56:33 +0000 Subject: [PATCH 3/8] chore: fix changelog --- website/src/pages/changelog.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/src/pages/changelog.mdx b/website/src/pages/changelog.mdx index 5978d1594..c5f51220e 100644 --- a/website/src/pages/changelog.mdx +++ b/website/src/pages/changelog.mdx @@ -14,11 +14,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed +- Fixed locking issue on Windows when multiselect dialog returns an error. Fixed in [PR](https://github.com/wailsapp/wails/pull/4156) by @johannes-luebke + ## v2.9.1 - 2024-06-18 ### Fixed - Fixed build issues on Linux for some glibc versions. Fixed in [PR](https://github.com/wailsapp/wails/pull/3545) by @leaanthony. -- Fixed locking issue on Windows when multiselect dialog returns an error. Fixed in [PR](https://github.com/wailsapp/wails/pull/4156) by @johannes-luebke ## v2.9.0 - 2024-06-16 From 38ac5f799b57ad7545e2f2a400ddfc066d3e8675 Mon Sep 17 00:00:00 2001 From: popaprozac Date: Thu, 27 Mar 2025 11:24:13 -0700 Subject: [PATCH 4/8] sign all things --- .../commands/build_assets/darwin/Taskfile.yml | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/v3/internal/commands/build_assets/darwin/Taskfile.yml b/v3/internal/commands/build_assets/darwin/Taskfile.yml index 30e7da823..3dd73a042 100644 --- a/v3/internal/commands/build_assets/darwin/Taskfile.yml +++ b/v3/internal/commands/build_assets/darwin/Taskfile.yml @@ -19,7 +19,7 @@ tasks: - go build {{.BUILD_FLAGS}} -o {{.OUTPUT}} vars: BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath -buildvcs=false -ldflags="-w -s"{{else}}-buildvcs=false -gcflags=all="-l"{{end}}' - DEFAULT_OUTPUT: '{{.BIN_DIR}}/{{.APP_NAME}}' + DEFAULT_OUTPUT: '{{.BIN_DIR}}/build/{{.APP_NAME}}' OUTPUT: '{{ .OUTPUT | default .DEFAULT_OUTPUT }}' env: GOOS: darwin @@ -36,14 +36,14 @@ tasks: - task: build vars: ARCH: amd64 - OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" + OUTPUT: "{{.BIN_DIR}}/build/{{.APP_NAME}}-amd64" - task: build vars: ARCH: arm64 - OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" + OUTPUT: "{{.BIN_DIR}}/build/{{.APP_NAME}}-arm64" cmds: - - lipo -create -output "{{.BIN_DIR}}/{{.APP_NAME}}" "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" - - rm "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" + - lipo -create -output "{{.BIN_DIR}}/build/{{.APP_NAME}}" "{{.BIN_DIR}}/build/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/build/{{.APP_NAME}}-arm64" + - rm "{{.BIN_DIR}}/build/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/build/{{.APP_NAME}}-arm64" package: summary: Packages a production build of the application into a `.app` bundle @@ -65,11 +65,17 @@ tasks: create:app:bundle: summary: Creates an `.app` bundle cmds: - - mkdir -p {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/{MacOS,Resources} - - cp build/darwin/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources - - cp {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/MacOS - - cp build/darwin/Info.plist {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents + - mkdir -p {{.BIN_DIR}}/release/{{.APP_NAME}}.app/Contents/{MacOS,Resources} + - cp build/darwin/icons.icns {{.BIN_DIR}}/release/{{.APP_NAME}}.app/Contents/Resources + - cp {{.BIN_DIR}}/build/{{.APP_NAME}} {{.BIN_DIR}}/release/{{.APP_NAME}}.app/Contents/MacOS + - cp build/darwin/Info.plist {{.BIN_DIR}}/release/{{.APP_NAME}}.app/Contents + - codesign --force --deep --sign - {{.BIN_DIR}}/release/{{.APP_NAME}}.app run: cmds: - - '{{.BIN_DIR}}/{{.APP_NAME}}' + - mkdir -p {{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/{MacOS,Resources} + - cp build/darwin/icons.icns {{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/Resources + - cp {{.BIN_DIR}}/build/{{.APP_NAME}} {{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/MacOS + - cp build/darwin/Info.dev.plist {{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/Info.plist + - codesign --force --deep --sign - {{.BIN_DIR}}/dev/{{.APP_NAME}}.app + - '{{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/MacOS/{{.APP_NAME}}' From 9db28ec5fda336b3bd2e20c8c56919f9c733eca4 Mon Sep 17 00:00:00 2001 From: popaprozac Date: Thu, 27 Mar 2025 11:24:13 -0700 Subject: [PATCH 5/8] update docs/changelog --- docs/src/content/docs/changelog.mdx | 1 + docs/src/content/docs/guides/signing.mdx | 2 +- docs/src/content/docs/learn/build.mdx | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/src/content/docs/changelog.mdx b/docs/src/content/docs/changelog.mdx index 75dbf824b..89af3efeb 100644 --- a/docs/src/content/docs/changelog.mdx +++ b/docs/src/content/docs/changelog.mdx @@ -139,6 +139,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Built-in service types are now consistently called `Service` by [@fbbdev](https://github.com/fbbdev) in [#4067](https://github.com/wailsapp/wails/pull/4067) - Built-in service creation functions with options are now consistently called `NewWithConfig` by [@fbbdev](https://github.com/fbbdev) in [#4067](https://github.com/wailsapp/wails/pull/4067) - `Select` method on `sqlite` service is now named `Query` for consistency with Go APIs by [@fbbdev](https://github.com/fbbdev) in [#4067](https://github.com/wailsapp/wails/pull/4067) +- Creates and ad-hoc signs app bundles in dev to enable certain macOS APIs by [@popaprozac] in [#4171](https://github.com/wailsapp/wails/pull/4171) ## v3.0.0-alpha.9 - 2025-01-13 diff --git a/docs/src/content/docs/guides/signing.mdx b/docs/src/content/docs/guides/signing.mdx index b5de768c9..68b9aabed 100644 --- a/docs/src/content/docs/guides/signing.mdx +++ b/docs/src/content/docs/guides/signing.mdx @@ -86,7 +86,7 @@ This guide covers how to sign your Wails applications for both macOS and Windows 3. **Configure Notarization** ```json title="gon-sign.json" { - "source": ["./build/bin/app"], + "source": ["./build/bin/release/app"], "bundle_id": "com.company.app", "apple_id": { "username": "dev@company.com", diff --git a/docs/src/content/docs/learn/build.mdx b/docs/src/content/docs/learn/build.mdx index aeb5804af..e45c6e3b9 100644 --- a/docs/src/content/docs/learn/build.mdx +++ b/docs/src/content/docs/learn/build.mdx @@ -123,6 +123,7 @@ the application on macOS. Key features include: - Building binaries for amd64, arm64 and universal (both) architectures - Generating `.icns` icon file - Creating an `.app` bundle for distributing +- Ad-hoc signing `.app` bundles - Setting macOS-specific build flags and environment variables ## Task Execution and Command Aliases From 8c3ee8f1bd9fd92df2f99773dec2a27871ebe611 Mon Sep 17 00:00:00 2001 From: Wilko Date: Sat, 29 Mar 2025 21:06:53 +0100 Subject: [PATCH 6/8] Support for File-Associations on macOS --- docs/src/content/docs/changelog.mdx | 1 + .../content/docs/guides/file-associations.mdx | 3 ++ v3/internal/commands/build-assets.go | 6 ++- v3/internal/commands/build_assets/config.yml | 1 + .../darwin/Info.dev.plist.tmpl | 45 ++++++++++++++----- .../darwin/Info.plist.tmpl | 45 ++++++++++++++----- 6 files changed, 77 insertions(+), 24 deletions(-) diff --git a/docs/src/content/docs/changelog.mdx b/docs/src/content/docs/changelog.mdx index 75dbf824b..291d33a42 100644 --- a/docs/src/content/docs/changelog.mdx +++ b/docs/src/content/docs/changelog.mdx @@ -76,6 +76,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add cancellation support for query methods on `sqlite` service by [@fbbdev](https://github.com/fbbdev) in [#4067](https://github.com/wailsapp/wails/pull/4067) - Add prepared statement support to `sqlite` service with JS bindings by [@fbbdev](https://github.com/fbbdev) in [#4067](https://github.com/wailsapp/wails/pull/4067) - Add `SetMenu()` on window to allow for setting a menu on a window by [@leaanthony](https://github.com/leaanthony) +-  Add File Association support for mac by [@wimaha] ### Fixed diff --git a/docs/src/content/docs/guides/file-associations.mdx b/docs/src/content/docs/guides/file-associations.mdx index 3394b576f..eebc29364 100644 --- a/docs/src/content/docs/guides/file-associations.mdx +++ b/docs/src/content/docs/guides/file-associations.mdx @@ -62,6 +62,7 @@ fileAssociations: | description | Description shown in file properties | Windows | | iconName | Name of the icon file (without extension) in the build folder | All | | role | Application's role for this file type (e.g., `Editor`, `Viewer`) | macOS | +| mimeType | MIME type for the file (e.g., `image/jpeg`) | macOS | ## Listening for File Open Events @@ -105,6 +106,8 @@ Let's walk through setting up file associations for a simple text editor: Run `wails3 generate icons --help` for more information. ::: + - For macOS add copy statement like `cp build/darwin/documenticon.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources` in the `create:app:bundle:` task. + 2. ### Configure File Associations Edit the `build/config.yml` file to add your file associations: diff --git a/v3/internal/commands/build-assets.go b/v3/internal/commands/build-assets.go index 12b5694fd..1fa9138f5 100644 --- a/v3/internal/commands/build-assets.go +++ b/v3/internal/commands/build-assets.go @@ -4,14 +4,15 @@ import ( "embed" _ "embed" "fmt" - "github.com/leaanthony/gosod" - "gopkg.in/yaml.v3" "io/fs" "os" "path/filepath" "runtime" "strings" "time" + + "github.com/leaanthony/gosod" + "gopkg.in/yaml.v3" ) //go:embed build_assets @@ -121,6 +122,7 @@ type FileAssociation struct { Description string `yaml:"description"` IconName string `yaml:"iconName"` Role string `yaml:"role"` + MimeType string `yaml:"mimeType"` } type UpdateConfig struct { diff --git a/v3/internal/commands/build_assets/config.yml b/v3/internal/commands/build_assets/config.yml index bc09a6d28..8a5e2f4c8 100644 --- a/v3/internal/commands/build_assets/config.yml +++ b/v3/internal/commands/build_assets/config.yml @@ -56,6 +56,7 @@ fileAssociations: # description: Image File # iconName: jpegFileIcon # role: Editor +# mimeType: image/jpeg # (optional) # Other data other: diff --git a/v3/internal/commands/updatable_build_assets/darwin/Info.dev.plist.tmpl b/v3/internal/commands/updatable_build_assets/darwin/Info.dev.plist.tmpl index 47f39f537..e44a679d2 100644 --- a/v3/internal/commands/updatable_build_assets/darwin/Info.dev.plist.tmpl +++ b/v3/internal/commands/updatable_build_assets/darwin/Info.dev.plist.tmpl @@ -2,27 +2,50 @@ CFBundlePackageType - APPL + APPL CFBundleName - {{.ProductName}} + {{.ProductName}} CFBundleExecutable - {{.BinaryName}} + {{.BinaryName}} CFBundleIdentifier - {{.ProductIdentifier}} + {{.ProductIdentifier}} CFBundleVersion - {{.ProductVersion}} + {{.ProductVersion}} CFBundleGetInfoString - {{.ProductComments}} + {{.ProductComments}} CFBundleShortVersionString - {{.ProductVersion}} + {{.ProductVersion}} CFBundleIconFile - icons + icons LSMinimumSystemVersion - 10.15.0 + 10.15.0 NSHighResolutionCapable - true + true NSHumanReadableCopyright - {{.ProductCopyright}} + {{.ProductCopyright}} + {{- if .FileAssociations}} + CFBundleDocumentTypes + + {{- range .FileAssociations}} + + CFBundleTypeExtensions + + {{.Ext}} + + CFBundleTypeName + {{.Name}} + CFBundleTypeRole + {{.Role}} + CFBundleTypeIconFile + {{.IconName}} + {{- if .MimeType}} + CFBundleTypeMimeType + {{.MimeType}} + {{- end}} + + {{- end}} + + {{- end}} NSAppTransportSecurity NSAllowsLocalNetworking diff --git a/v3/internal/commands/updatable_build_assets/darwin/Info.plist.tmpl b/v3/internal/commands/updatable_build_assets/darwin/Info.plist.tmpl index 3dce3676c..c20032556 100644 --- a/v3/internal/commands/updatable_build_assets/darwin/Info.plist.tmpl +++ b/v3/internal/commands/updatable_build_assets/darwin/Info.plist.tmpl @@ -2,26 +2,49 @@ CFBundlePackageType - APPL + APPL CFBundleName - {{.ProductName}} + {{.ProductName}} CFBundleExecutable - {{.BinaryName}} + {{.BinaryName}} CFBundleIdentifier - {{.ProductIdentifier}} + {{.ProductIdentifier}} CFBundleVersion - {{.ProductVersion}} + {{.ProductVersion}} CFBundleGetInfoString - {{.ProductComments}} + {{.ProductComments}} CFBundleShortVersionString - {{.ProductVersion}} + {{.ProductVersion}} CFBundleIconFile - icons + icons LSMinimumSystemVersion - 10.15.0 + 10.15.0 NSHighResolutionCapable - true + true NSHumanReadableCopyright - {{.ProductCopyright}} + {{.ProductCopyright}} + {{- if .FileAssociations}} + CFBundleDocumentTypes + + {{- range .FileAssociations}} + + CFBundleTypeExtensions + + {{.Ext}} + + CFBundleTypeName + {{.Name}} + CFBundleTypeRole + {{.Role}} + CFBundleTypeIconFile + {{.IconName}} + {{- if .MimeType}} + CFBundleTypeMimeType + {{.MimeType}} + {{- end}} + + {{- end}} + + {{- end}} \ No newline at end of file From 5f8a858aa9a42ede5e39346b29fd2887af07b7ae Mon Sep 17 00:00:00 2001 From: Wilko Date: Sat, 29 Mar 2025 21:40:50 +0100 Subject: [PATCH 7/8] Update changelog.mdx --- docs/src/content/docs/changelog.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/content/docs/changelog.mdx b/docs/src/content/docs/changelog.mdx index 291d33a42..79e020b66 100644 --- a/docs/src/content/docs/changelog.mdx +++ b/docs/src/content/docs/changelog.mdx @@ -76,7 +76,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Add cancellation support for query methods on `sqlite` service by [@fbbdev](https://github.com/fbbdev) in [#4067](https://github.com/wailsapp/wails/pull/4067) - Add prepared statement support to `sqlite` service with JS bindings by [@fbbdev](https://github.com/fbbdev) in [#4067](https://github.com/wailsapp/wails/pull/4067) - Add `SetMenu()` on window to allow for setting a menu on a window by [@leaanthony](https://github.com/leaanthony) --  Add File Association support for mac by [@wimaha] +-  Add File Association support for mac by [@wimaha](https://github.com/wimaha) in [#4177](https://github.com/wailsapp/wails/pull/4177) ### Fixed From c482c85c7b3885438c2b1dd8b20ae4998ee37131 Mon Sep 17 00:00:00 2001 From: popaprozac Date: Wed, 9 Apr 2025 15:48:52 -0700 Subject: [PATCH 8/8] revert and append .dev --- docs/src/content/docs/guides/signing.mdx | 2 +- .../commands/build_assets/darwin/Taskfile.yml | 32 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/src/content/docs/guides/signing.mdx b/docs/src/content/docs/guides/signing.mdx index 68b9aabed..b5de768c9 100644 --- a/docs/src/content/docs/guides/signing.mdx +++ b/docs/src/content/docs/guides/signing.mdx @@ -86,7 +86,7 @@ This guide covers how to sign your Wails applications for both macOS and Windows 3. **Configure Notarization** ```json title="gon-sign.json" { - "source": ["./build/bin/release/app"], + "source": ["./build/bin/app"], "bundle_id": "com.company.app", "apple_id": { "username": "dev@company.com", diff --git a/v3/internal/commands/build_assets/darwin/Taskfile.yml b/v3/internal/commands/build_assets/darwin/Taskfile.yml index 3dd73a042..f0791fea9 100644 --- a/v3/internal/commands/build_assets/darwin/Taskfile.yml +++ b/v3/internal/commands/build_assets/darwin/Taskfile.yml @@ -19,7 +19,7 @@ tasks: - go build {{.BUILD_FLAGS}} -o {{.OUTPUT}} vars: BUILD_FLAGS: '{{if eq .PRODUCTION "true"}}-tags production -trimpath -buildvcs=false -ldflags="-w -s"{{else}}-buildvcs=false -gcflags=all="-l"{{end}}' - DEFAULT_OUTPUT: '{{.BIN_DIR}}/build/{{.APP_NAME}}' + DEFAULT_OUTPUT: '{{.BIN_DIR}}/{{.APP_NAME}}' OUTPUT: '{{ .OUTPUT | default .DEFAULT_OUTPUT }}' env: GOOS: darwin @@ -36,14 +36,14 @@ tasks: - task: build vars: ARCH: amd64 - OUTPUT: "{{.BIN_DIR}}/build/{{.APP_NAME}}-amd64" + OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" - task: build vars: ARCH: arm64 - OUTPUT: "{{.BIN_DIR}}/build/{{.APP_NAME}}-arm64" + OUTPUT: "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" cmds: - - lipo -create -output "{{.BIN_DIR}}/build/{{.APP_NAME}}" "{{.BIN_DIR}}/build/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/build/{{.APP_NAME}}-arm64" - - rm "{{.BIN_DIR}}/build/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/build/{{.APP_NAME}}-arm64" + - lipo -create -output "{{.BIN_DIR}}/{{.APP_NAME}}" "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" + - rm "{{.BIN_DIR}}/{{.APP_NAME}}-amd64" "{{.BIN_DIR}}/{{.APP_NAME}}-arm64" package: summary: Packages a production build of the application into a `.app` bundle @@ -65,17 +65,17 @@ tasks: create:app:bundle: summary: Creates an `.app` bundle cmds: - - mkdir -p {{.BIN_DIR}}/release/{{.APP_NAME}}.app/Contents/{MacOS,Resources} - - cp build/darwin/icons.icns {{.BIN_DIR}}/release/{{.APP_NAME}}.app/Contents/Resources - - cp {{.BIN_DIR}}/build/{{.APP_NAME}} {{.BIN_DIR}}/release/{{.APP_NAME}}.app/Contents/MacOS - - cp build/darwin/Info.plist {{.BIN_DIR}}/release/{{.APP_NAME}}.app/Contents - - codesign --force --deep --sign - {{.BIN_DIR}}/release/{{.APP_NAME}}.app + - mkdir -p {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/{MacOS,Resources} + - cp build/darwin/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/Resources + - cp {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents/MacOS + - cp build/darwin/Info.plist {{.BIN_DIR}}/{{.APP_NAME}}.app/Contents + - codesign --force --deep --sign - {{.BIN_DIR}}/{{.APP_NAME}}.app run: cmds: - - mkdir -p {{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/{MacOS,Resources} - - cp build/darwin/icons.icns {{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/Resources - - cp {{.BIN_DIR}}/build/{{.APP_NAME}} {{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/MacOS - - cp build/darwin/Info.dev.plist {{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/Info.plist - - codesign --force --deep --sign - {{.BIN_DIR}}/dev/{{.APP_NAME}}.app - - '{{.BIN_DIR}}/dev/{{.APP_NAME}}.app/Contents/MacOS/{{.APP_NAME}}' + - mkdir -p {{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/{MacOS,Resources} + - cp build/darwin/icons.icns {{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/Resources + - cp {{.BIN_DIR}}/{{.APP_NAME}} {{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/MacOS + - cp build/darwin/Info.dev.plist {{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/Info.plist + - codesign --force --deep --sign - {{.BIN_DIR}}/{{.APP_NAME}}.dev.app + - '{{.BIN_DIR}}/{{.APP_NAME}}.dev.app/Contents/MacOS/{{.APP_NAME}}'