diff --git a/.github/workflows/update-binary.yml b/.github/workflows/update-binary.yml
index 432de01..9480168 100644
--- a/.github/workflows/update-binary.yml
+++ b/.github/workflows/update-binary.yml
@@ -15,10 +15,17 @@ defaults:
jobs:
build-stubs:
name: Build stub binaries
- runs-on: windows-latest
strategy:
matrix:
python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14" ]
+ config:
+ - runner: windows-latest
+ arch: x64
+ suffix: '-amd64'
+ - runner: windows-11-arm
+ arch: ARM64
+ suffix: '-arm64'
+ runs-on: ${{ matrix.config.runner }}
steps:
- name: Set Build Variables
id: build-vars
@@ -52,11 +59,11 @@ jobs:
briefcase build windows visualstudio
echo "Build ${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }} console stub artefact"
- mv "./build/console-stub/windows/visualstudio/x64/Release/console-stub.exe" ./Stub.exe
+ mv "./build/console-stub/windows/visualstudio/${{ matrix.config.arch }}/Release/console-stub.exe" ./Stub.exe
7z a Console-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}.zip Stub.exe
echo "Build ${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }} GUI stub artefact"
- mv "./build/gui-stub/windows/visualstudio/x64/Release/GUI Stub.exe" ./Stub.exe
+ mv "./build/gui-stub/windows/visualstudio/${{ matrix.config.arch }}/Release/GUI Stub.exe" ./Stub.exe
7z a GUI-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}.zip Stub.exe
echo "Stub binaries:"
@@ -72,5 +79,5 @@ jobs:
python -m pip install -U setuptools
python -m pip install awscli
- aws s3 cp stub/Console-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}.zip s3://briefcase-support/python/${{ env.PYTHON_TAG }}/windows/Console-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}.zip
- aws s3 cp stub/GUI-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}.zip s3://briefcase-support/python/${{ env.PYTHON_TAG }}/windows/GUI-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}.zip
+ aws s3 cp stub/Console-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}.zip s3://briefcase-support/python/${{ env.PYTHON_TAG }}/windows/Console-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}${{ matrix.config.suffix }}.zip
+ aws s3 cp stub/GUI-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}.zip s3://briefcase-support/python/${{ env.PYTHON_TAG }}/windows/GUI-Stub-${{ env.PYTHON_TAG }}-${{ env.BUILD_NUMBER }}${{ matrix.config.suffix }}.zip
diff --git a/README.rst b/README.rst
index c5f503e..ee799ac 100644
--- a/README.rst
+++ b/README.rst
@@ -42,7 +42,7 @@ However, if you *do* want use this template directly...
* **Deskop Development with C++** - default options, plus the "C++/CLI Support for v143 build tools".
4. `Obtain a Python Windows Embeddable package`_, and extract it into the
- ``My Project/x64/Release`` directory generated by the template. This will give you a
+ ``My Project/x64/Release`` directory generated by the template (`My Project/ARM64/Release` if you're on ARM64). This will give you a
``python3.dll`` (amongst other artefacts) in the ``My Project/x64/Release`` folder.
5. Add your code to the template, into the ``My Project/x64/Release/app`` directory.
@@ -87,6 +87,8 @@ file. Open a command prompt, and change into the ``My Project`` directory. Then:
C:\...>wix build -ext WixToolset.UI.wixext -arch x64 my-project.wxs -loc unicode.wxl -o "My Project.msi"
+Use `-arch arm64` if you're on ARM64.
+
The MSI file can then be used to install your application. When installed, your
application will have an entry in your Start menu.
diff --git a/cookiecutter.json b/cookiecutter.json
index 91ba96f..c80373b 100644
--- a/cookiecutter.json
+++ b/cookiecutter.json
@@ -23,6 +23,8 @@
"post_install_script": "",
"pre_uninstall_script": "",
"python_version": "3.X.0",
+ "host_arch": "AMD64",
+ "vscode_platform": "{{ 'ARM64' if cookiecutter.host_arch == 'ARM64' else 'x64' }}",
"_extensions": [
"briefcase.integrations.cookiecutter.PythonVersionExtension",
"briefcase.integrations.cookiecutter.UUIDExtension",
diff --git a/{{ cookiecutter.format }}/briefcase.toml b/{{ cookiecutter.format }}/briefcase.toml
index eccdcb5..8e146ab 100644
--- a/{{ cookiecutter.format }}/briefcase.toml
+++ b/{{ cookiecutter.format }}/briefcase.toml
@@ -3,9 +3,9 @@
target_version = "0.3.24"
[paths]
-app_path = "x64/Release/app"
-app_packages_path = "x64/Release/app_packages"
-support_path = "x64/Release"
+app_path = "{{ cookiecutter.vscode_platform }}/Release/app"
+app_packages_path = "{{ cookiecutter.vscode_platform }}/Release/app_packages"
+support_path = "{{ cookiecutter.vscode_platform }}/Release"
extras_path = "extras"
{# Minor versions for 3.10, 3.11, and 3.12 cannot be bumped further -#}
{# since Python is not hosting embeddable zipped versions of them -#}
@@ -22,5 +22,5 @@ icon = "{{ cookiecutter.formal_name }}/icon.ico"
document_type_icon.{{ document_type_id }} = "{{ cookiecutter.app_name }}-{{ document_type_id }}.ico"
{% endfor %}
cleanup_paths = [
- "x64/Release/python*.exe",
+ "{{ cookiecutter.vscode_platform }}/Release/python*.exe",
]
diff --git a/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}.sln b/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}.sln
index e8c4b70..71ade49 100644
--- a/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}.sln
+++ b/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}.sln
@@ -9,12 +9,18 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
+ Debug|ARM64 = Debug|ARM64
+ Release|ARM64 = Release|ARM64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6887C8E5-0B59-4F0A-84AC-6CB7282BF296}.Debug|x64.ActiveCfg = Debug|x64
{6887C8E5-0B59-4F0A-84AC-6CB7282BF296}.Debug|x64.Build.0 = Debug|x64
{6887C8E5-0B59-4F0A-84AC-6CB7282BF296}.Release|x64.ActiveCfg = Release|x64
{6887C8E5-0B59-4F0A-84AC-6CB7282BF296}.Release|x64.Build.0 = Release|x64
+ {6887C8E5-0B59-4F0A-84AC-6CB7282BF296}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {6887C8E5-0B59-4F0A-84AC-6CB7282BF296}.Debug|ARM64.Build.0 = Debug|ARM64
+ {6887C8E5-0B59-4F0A-84AC-6CB7282BF296}.Release|ARM64.ActiveCfg = Release|ARM64
+ {6887C8E5-0B59-4F0A-84AC-6CB7282BF296}.Release|ARM64.Build.0 = Release|ARM64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}/packages.config b/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}/packages.config
index 8e78fcb..e6017c3 100644
--- a/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}/packages.config
+++ b/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}/packages.config
@@ -1,4 +1,5 @@
+
diff --git a/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}/{{ cookiecutter.formal_name }}.vcxproj b/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}/{{ cookiecutter.formal_name }}.vcxproj
index f713f35..a5295fd 100644
--- a/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}/{{ cookiecutter.formal_name }}.vcxproj
+++ b/{{ cookiecutter.format }}/{{ cookiecutter.formal_name }}/{{ cookiecutter.formal_name }}.vcxproj
@@ -1,6 +1,7 @@
-
+
+
Debug
@@ -10,6 +11,14 @@
Release
x64
+
+ Debug
+ ARM64
+
+
+ Release
+ ARM64
+
17.0
@@ -20,14 +29,14 @@
10.0
-
+
Application
true
v143
true
Unicode
-
+
Application
false
v143
@@ -39,20 +48,20 @@
-
+
-
+
-
+
{% if cookiecutter.console_app %}{{ cookiecutter.app_name }}{% else %}{{ cookiecutter.formal_name }}{% endif %}
-
+
{% if cookiecutter.console_app %}{{ cookiecutter.app_name }}{% else %}{{ cookiecutter.formal_name }}{% endif %}
-
+
Level3
_DEBUG;%(PreprocessorDefinitions)
@@ -63,7 +72,7 @@
Main
-
+
Level3
NDEBUG;%(PreprocessorDefinitions)
@@ -109,6 +118,7 @@
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
+
+