{
  "schemaVersion": "0.11.0",
  "canonical": "https://www.pystone.net/notes/python-desktop-app-dev-workflow/",
  "atlas": "https://www.pystone.net/?node=python-desktop-app-dev-workflow#knowledge-atlas",
  "markdown": "https://www.pystone.net/notes/python-desktop-app-dev-workflow.md",
  "context": "https://www.pystone.net/notes/python-desktop-app-dev-workflow.context.json",
  "knowledgeVersion": "224c990773de.5fa8af6e39fa",
  "build": {
    "siteCommit": "224c990773de166d23a886306577dd90379529ce",
    "notesCommit": "5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a",
    "builtAt": "1970-01-01T00:00:00.000Z",
    "version": "224c990773de.5fa8af6e39fa"
  },
  "id": "note:python-desktop-app-dev-workflow",
  "slug": "python-desktop-app-dev-workflow",
  "title": "【最佳实践】Python桌面应用程序开发构建发布工作流",
  "type": "note",
  "visibility": "public",
  "idStability": "rename-stable",
  "author": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "publisher": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "aliases": [],
  "summary": "【最佳实践】Python桌面应用程序开发构建发布工作流 .ui文件处理",
  "contentRole": "unspecified",
  "isMoc": false,
  "mocRecognition": "none",
  "generated": false,
  "attribution": "unspecified",
  "domain": "10-计算机、信息技术与工程",
  "tags": [],
  "mocs": [],
  "contentHash": "80fc0b23d8d182430f558bcfffb64c202ab1990ace8acd90c63c972d106d31d3",
  "assets": [],
  "headings": [
    {
      "depth": 1,
      "text": "【最佳实践】Python桌面应用程序开发构建发布工作流",
      "anchor": "最佳实践python桌面应用程序开发构建发布工作流",
      "citation": "https://www.pystone.net/notes/python-desktop-app-dev-workflow/#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5python%E6%A1%8C%E9%9D%A2%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%E6%9E%84%E5%BB%BA%E5%8F%91%E5%B8%83%E5%B7%A5%E4%BD%9C%E6%B5%81"
    },
    {
      "depth": 2,
      "text": "打包",
      "anchor": "打包",
      "citation": "https://www.pystone.net/notes/python-desktop-app-dev-workflow/#%E6%89%93%E5%8C%85"
    },
    {
      "depth": 2,
      "text": "制作安装包",
      "anchor": "制作安装包",
      "citation": "https://www.pystone.net/notes/python-desktop-app-dev-workflow/#%E5%88%B6%E4%BD%9C%E5%AE%89%E8%A3%85%E5%8C%85"
    },
    {
      "depth": 2,
      "text": "配置安装后执行的脚本",
      "anchor": "配置安装后执行的脚本",
      "citation": "https://www.pystone.net/notes/python-desktop-app-dev-workflow/#%E9%85%8D%E7%BD%AE%E5%AE%89%E8%A3%85%E5%90%8E%E6%89%A7%E8%A1%8C%E7%9A%84%E8%84%9A%E6%9C%AC"
    },
    {
      "depth": 3,
      "text": "注意事项",
      "anchor": "注意事项",
      "citation": "https://www.pystone.net/notes/python-desktop-app-dev-workflow/#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9"
    },
    {
      "depth": 2,
      "text": "ref",
      "anchor": "ref",
      "citation": "https://www.pystone.net/notes/python-desktop-app-dev-workflow/#ref"
    }
  ],
  "claims": [],
  "outgoing": [],
  "incoming": [
    {
      "id": "note:application-and-cloud-engineering",
      "title": "应用开发与云端工程",
      "url": "https://www.pystone.net/notes/application-and-cloud-engineering/",
      "atlas": "https://www.pystone.net/?node=application-and-cloud-engineering#knowledge-atlas",
      "label": "应用开发与云端工程",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "桌面应用开发中的“【最佳实践】Python桌面应用程序开发构建发布工作流”导航项",
      "citation": "https://www.pystone.net/notes/application-and-cloud-engineering/#%E6%A1%8C%E9%9D%A2%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91"
    }
  ],
  "contentMarkdown": "# 【最佳实践】Python桌面应用程序开发构建发布工作流\n.ui文件处理\n\n\n## 打包\n\nnuitka打包。\n- **原理**：Nuitka是一个非常强大的Python编译器，它可以将Python代码转换成C++代码，然后编译成二进制形式。这个过程提高了代码的执行效率，并可以提供一定程度的代码保护，因为最终的产品是二进制文件而不是原始的Python代码。\n- **优点**：\n    - **性能提升**：通过将Python代码转换为优化的C++代码，然后编译成机器码，Nuitka可以提供显著的性能提升。\n    - **代码保护**：编译后的二进制文件较难逆向工程，为源码提供了一层保护。\n    - **兼容性**：支持多种平台，包括Windows、Linux和macOS。\n\t- 使用者多，相关资料多。\n    - 配置容易。\n\nPySide6项目打包：https://blog.csdn.net/qq_25262697/article/details/129302819\n其他资料：https://zhuanlan.zhihu.com/p/165978688\n\n\n## 制作安装包\n参考：https://blog.csdn.net/qq_25262697/article/details/131627847\n\nInno Setup 免费的 Windows 安装程序制作软件，具有易于使用的脚本语言，可以创建具有自定义界面、安装选项和脚本操作的安装程序。\nInno Setup配合nuitka体验极佳！\n\n## 配置安装后执行的脚本\n\na. 在`[Files]`部分添加你的`.bat`脚本\n指定`.bat`脚本的源路径和目标安装路径。例如：\n\n`[Files] Source: \"C:\\MyProject\\MyScript.bat\"; DestDir: \"{app}\"; Flags: ignoreversion`\n这将在安装过程中将`MyScript.bat`复制到安装目录（通常是`{app}`，即用户选择的安装目录）。\n\nb. 在`[Run]`部分指定何时运行这个脚本\n使用`[Run]`部分来指定安装后需要执行的命令。例如：\n\n```text\n[Run] Filename: \"{app}\\MyScript.bat\"; Description: \"Run my script\"; Flags: postinstall skipifsilent\n```\n\n这里的`Filename`是你的`.bat`文件的安装后路径。`Description`是在安装过程中显示给用户的描述。`Flags`中的`postinstall`表示这个命令会在安装过程的最后执行，`skipifsilent`表示如果安装是在无提示（静默）模式下运行，则不执行此命令。\n### 注意事项\n\n- 在用户的机器上运行脚本可能涉及到权限问题，确保脚本不会执行任何可能需要提升权限的操作，除非你明确知道用户有足够的权限。\n- 在实际部署前，充分测试安装包在各种环境下的行为，确保它的行为符合预期，且不会对用户的系统造成不良影响。\n\n通过以上步骤，你可以在Inno Setup中配置安装程序，使其在首次安装后运行指定的`.bat`脚本。\n\n## ref\nhttps://www.cnblogs.com/chrisfang/p/17027553.html\n"
}
