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}. - + +