# briefcase-windows-app-template **Repository Path**: thkiler/briefcase-windows-app-template ## Basic Information - **Project Name**: briefcase-windows-app-template - **Description**: briefcase-windows-app-template - **Primary Language**: Python - **License**: MIT - **Default Branch**: 3.10 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-08-23 - **Last Updated**: 2023-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Briefcase Windows App Template ============================== A `Cookiecutter `__ template for building Python apps that will run under Windows, packaged as an MSI installer. **This repository branch contains a template for Python 3.10**. Other Python versions are available by cloning other branches of repository. Using this template ------------------- The easiest way to use this project is to not use it at all - at least, not directly. `Briefcase `__ is a tool that uses this template, rolling it out using data extracted from a ``pyproject.toml`` configuration file. However, if you *do* want use this template directly... 1. Install `cookiecutter`_. This is a tool used to bootstrap complex project templates:: $ pip install cookiecutter 2. Run ``cookiecutter`` on the template:: $ cookiecutter https://github.com/beeware/briefcase-windows-app-template --checkout 3.10 This will ask you for a number of details of your application, including the `name` of your application (which should be a valid PyPI identifier), and the `Formal Name` of your application (the full name you use to describe your app). The remainder of these instructions will assume a `name` of ``my-project``, and a formal name of ``My Project``. 3. `Download the Python Embedded Windows install`_, and extract it into the ``My Project/src`` directory generated by the template. This will give you a ``My Project/src/python`` directory containing a self-contained Python install. 4. Modify the ``python38._pth`` file contained in the ``My Project/src/python`` folder, adding these two lines:: ..\\app ..\\app_packages This will enable the embedded Python install to find your application's code and dependencies. 5. Add your code to the template, into the ``My Project/src/app`` directory. At the very minimum, you need to have an ``app//__main__.py`` file that defines an entry point that will start your application. If your code has any dependencies, they should be installed under the ``My Project/src/app_packages`` directory. If you've done this correctly, a project with a formal name of ``My Project``, with an app name of ``my-project`` should have a directory structure that looks something like:: My Project/ src/ app/ my_project/ __init__.py __main__.py app.py app_packages/ ... python/ ... briefcase.toml my-project.ico my-project.wxs This project can now be compiled with `WiX `__ to produce an MSI file. This is a three step process. Open a command prompt, and change into the ``My Project`` directory. Then: 1. Generate a manifest of the files in your project:: C:\...>"%WIX%\bin\heat.exe" dir src -gg -sfrag -sreg -srd -scom -dr my_project_ROOTDIR -cg my_project_COMPONENTS -var var.SourceDir -out my-project-manifest.wxs 2. Compile the ``.wxs`` files:: C:\...>"%WIX%\bin\candle.exe" -ext WixUtilExtension -ext WixUIExtension -dSourceDir=src my-project.wxs myproject-manifest.wxs 3. Link the compiled output to produce the MSI:: C:\...>"%WIX%\bin\light.exe" -ext WixUtilExtension -ext WixUIExtension my-project.wixobj myproject-manifest.wixobj "My Project.msi" The MSI file can then be used to install your application. When installed, your application will have an entry in your Start menu. Next steps ---------- Of course, running Python code isn't very interesting by itself - you won't be able to do any console input or output, because a Windows app doesn't display a console. To do something interesting, you'll need to work with the native Windows system libraries to draw widgets and respond to screen taps. The `Python for .NET`_ bridging library can be used to interface with the Windows system libraries. Alternatively, you could use a cross-platform widget toolkit that supports Windows (such as `Toga`_) to provide a GUI for your application. If you have any external library dependencies (like Toga, or anything other third-party library), you should install the library code into the ``app_packages`` directory. This directory is the same as a ``site_packages`` directory on a desktop Python install. .. _cookiecutter: https://github.com/cookiecutter/cookiecutter .. _Download the Python Embedded Windows install: https://briefcase-support.org/python?platform=windows&version=3.10 .. _Python for .NET: http://pythonnet.github.io/ .. _Toga: https://beeware.org/project/projects/libraries/toga