首页 » 教程 » 如何一步一步创建 .exe 文件来安装程序。
.exe 文件允许您将代码、资源和依赖项打包成更专业、更用户友好的 Windows 可执行文件。
PyInstaller、Inno Setup 或 NSIS 等工具简化了可执行文件和安装程序的创建,无需具备 Windows 专业知识。
使用相对路径,包含所有依赖项,并在多个 Windows 版本上进行测试,可以避免大多数打包错误。
自定义图标、数字签名和良好的文档可以增强用户信心,并有助于 .exe 文件的分发。
如果您曾经想知道如何将项目转换为 Windows 可执行文件,那么您来对地方了。本指南将一步一步地向您展示如何操作。 创建一个 .exe 文件来安装你自己的程序 无论你的应用程序是用任何语言“手工”编写的,还是用 Python 开发的,你都可以在尝试的过程中不至于失败。
我们的目标是为您提供一个简洁、专业且可靠的安装程序文件,任何人只需点击几下即可运行。让我们来回顾一下。 .exe 文件究竟是什么?为什么要打包软件?需要使用哪些工具? (Inno Setup、NSIS、PyInstaller 等),如何正确准备项目,生成可执行文件的步骤,典型错误以及如何安全地分发它。
.exe 文件是什么?它在 Windows 系统中扮演什么角色?
在Windows系统中,扩展名为.exe的文件是启动程序的标准格式:也就是说,它是系统能够识别的程序文件类型。 可执行的,能够启动应用程序 双击即可打开。在 .exe 文件中,您可以找到从编译后的机器代码到使程序正常运行所需的基本资源、库和配置等所有内容。
当你双击可执行文件时,Windows 会自动处理。 将其加载到内存中并按照其中的说明进行操作。它可以是完整的应用程序、将文件部署到磁盘的安装程序、安装向导,甚至是小型命令行实用程序。
把 .exe 文件想象成一个旅行箱:它能让你不再把整个项目分散在各个文件夹和文件中, 你把必需品装在一个容器里。 用户可以轻松打开,无需担心他们不理解的奇怪路径或依赖关系。
此外,.exe 文件是一种封装您工作成果的方式:用户看到的是一个实用且可用的文件,而 源代码和内部细节仍然“隐藏”着。 在后台(尽管动机强烈的攻击者总是可以尝试逆向工程)。
你为什么对创建自己的 .exe 文件感兴趣?
首要原因是便利性。如果你想让其他人使用你的程序,把它交给他们要容易得多。 一个包含所有内容的单个 .exe 文件。 与其让他们按照“安装这个,复制那个,配置另一个”之类的步骤操作,不如让他们更轻松地使用你的应用程序。用户操作越简单,他们就越有可能使用你的应用程序。
另一个重要优势是给人以专业感。它配备了带有图标的安装程序、分步向导和卸载程序。 它比包含散乱文件的简单压缩文件可靠得多。尤其是在商业环境中,如果人们收到的东西与他们从知名商业供应商那里安装的东西相似,他们会感到更加安心。
工作安全也必须考虑在内。虽然 .exe 文件并非完美的屏障, 访问源代码更加复杂。 如果您提交的是开源脚本,例如用 Python 或 PowerShell 编写的脚本,至少可以增加一层保护措施,防止他人窥探。
最后,通过将应用程序打包成可执行文件,您可以添加一些非常有趣的附加功能: 支持更新、系统注册、快捷方式、卸载程序 以及其他典型的经典 Windows 安装程序功能。
用于创建可安装的 .exe 文件的主要工具
为 Windows 系统打包软件不必是一件令人头疼的事,也不需要花费巨额预算。有很多免费且功能强大的工具可以帮你轻松完成这项工作。 直接创建 .exe 安装程序即使你不是 Windows 生态系统方面的专家。
构建安装程序最常用的选项包括 Inno Setup 和 NSIS(Nullsoft Scriptable Install System)。两者都是广泛使用的打包解决方案。 任何类型的程序,无论使用何种语言 无论你和谁一起开发,只要你能提供必要的二进制文件或文件即可。
如果你的项目是用 Python 编写的,那么像 PyInstaller 这样的特定工具就派上用场了。PyInstaller 不仅可以创建安装程序,它还能够…… 将您的 .py 脚本转换为独立的可执行文件。其中包括 Python 解释器和应用程序所需的所有库。
编辑过程是怎样的?在决定使用哪种工具之前,请问自己几个问题:你想要一个简单的“便携式”可执行文件,还是 你需要一个带有安装向导、快捷方式和卸载程序的安装程序。你的应用程序是否严重依赖外部资源,例如图片、数据库或配置文件?答案将引导你找到合适的解决方案。
如何在打包前准备好你的项目
制作一个优秀的 .exe 文件,一半的工作量不在于工具本身,而在于项目准备。准备工作越井然有序,结果就越好。 这样更容易生成一个不会失败的干净安装程序。 在用户的计算机上。
第一步是整理文件结构。创建单独的文件夹。 图片、资源、外部库和数据库不要仅仅出于追求秩序的愿望而这样做:这将使选择安装程序中包含的内容变得容易得多,也便于以后查找问题。
第二个关键点:路由。你的应用程序应该始终使用路由。 相对路线而非绝对路线如果你的代码指向“C:/Users/YourName/Project/images/logo.png”,那么它几乎肯定会在其他计算机上运行失败。最好使用类似“./images/logo.png”这样的路径,或者相对于安装文件夹的相对路径。
还要检查你的程序需要哪些外部依赖项:第三方库、框架、系统组件、解释器等等。列出所有需要的外部依赖项。 你必须到场,节目才能正常进行。在某些情况下,您可以将其直接包含在安装程序中;在其他情况下,您必须将其指定为先决条件。
最后,尽量让你的应用程序错误信息清晰明了。当打包的可执行文件运行失败时,用户很难理解发生了什么,所以…… 一些不错的消息和日志 它们将为您节省大量技术支持时间。
使用 PyInstaller 创建 Python 可执行文件
如果你的程序是用 Python 编写的,PyInstaller 是最实用的将其转换为可执行文件的工具之一。它的原理是分析你的脚本,检测你使用的模块和库,然后…… 生成一个即使在没有安装 Python 的计算机上也能运行的 .exe 文件。.
一个重要的细节:你必须在与要创建可执行文件相同的操作系统上运行 PyInstaller。也就是说, 如果您需要 Windows .exe 文件,则必须在 Windows 中启动 PyInstaller。在 Linux 系统上运行它并期望得到一个可以直接使用的 Windows 二进制文件是不现实的;如果你想在 macOS 系统上运行该 .exe 文件,你可以查找相关方法。 在 macOS 上使用 Wine.
安装就像使用 pip 一样简单。在已配置 Python 的终端中,您可以使用如下简单命令进行安装: pip 安装 pyinstaller然后,您可以使用命令行工具来打包您的脚本。
PyInstaller 提供了几个关键选项,您在使用前应该了解这些选项:您可以选择生成包含多个文件的文件夹,或者 一个单一的“一体化”可执行文件决定你的应用程序是需要控制台还是只需要图形窗口,添加其他资源、图标等。
安装完成后,典型的工作流程是从终端导航到主脚本所在的文件夹,然后使用必要的选项启动 PyInstaller。 它将创建 build 和 dist 等文件夹,以及一个 .spec 文件。 它描述了包装配置。
PyInstaller 的基本选项,用于正确打包您的应用程序
PyInstaller 通过命令行参数控制。您无需记住所有参数,但建议您了解最常用选项的功能,因为 它们直接影响可执行文件的生成方式。.
默认情况下,PyInstaller 以模式运行 -D 或 –onedir这将生成一个输出文件夹,其中包含可执行文件以及所有必要的 DLL、库和资源。这便于调试,因为您可以清楚地看到包含的内容,并在无需重新构建所有内容的情况下进行修改。
如果您希望保存单个文件,可以使用该选项。 -F 或 –onefile在这种情况下,PyInstaller 会将您的应用程序及其所有依赖项打包到一个单独的 .exe 文件中。该可执行文件首次启动通常需要更长时间,但是 分发起来要容易得多。尤其是不希望用户看到完整的内部结构时。
选择 -wo –窗口 这表明您的应用程序使用图形界面运行,不需要控制台。这对于 GUI 程序(例如,使用 Tkinter、PyQt 或类似工具编写的程序)来说非常理想,因为 它可以防止终端出现烦人的黑色窗口。 当用户与您的应用程序交互时。
开始菜单没有响应?在 Windows 10 中重新启动 StartMenuExperienceHost.exe连接器 –添加数据 您可以将其他文件包含在 PyInstaller 生成的可执行文件或目录中:例如图像、模板、配置文件、数据库等。语法通常如下所示: –add-data "源路径;目标路径"指定要将这些资源放置在哪个内部文件夹中。
最后,还有这个选项 -图标 它允许您为可执行文件指定自定义图标。一个简单的美观细节就能让您的程序拥有独特的外观。 在桌面、开始菜单或文件资源管理器中拥有更好的显示效果你只需要给它提供一个合适的.ico文件即可。
使用 PyInstaller 创建可执行文件的实用示例
要了解这一切是如何运作的,没有什么比一个简单的例子更合适了。假设你有一个文件 greeting.py 中有一个简单的 print("Hello")这是一个典型的“Hello World”程序,非常适合在没有复杂操作的情况下测试流程。
在终端中,导航到 saludo.py 所在的文件夹,并执行最基本的命令: pyinstaller saludo.py由于您没有指定任何额外的选项,PyInstaller 将使用默认的 --onedir 模式,并生成一个包含所有必需文件的输出文件夹。
完成后,你会看到创建了几个新文件:一个 build 文件夹、一个 dist 文件夹和一个 saludo.spec 文件。在 dist 文件夹内,你会找到 一个以你的脚本名称命名的目录,以及目录下的 saludo.exe 文件。 以及 PyInstaller 检测到的依赖项。
如果您使用的是 Windows 系统,并且想要从终端运行该程序,请导航到该文件夹并运行类似这样的命令。 运行 .\saludo.exe 查看结果在这种情况下,由于这是一个控制台脚本,你需要打开终端窗口才能看到打印出来的文本。
如果您更喜欢单个可执行文件而不是包含多个项目的文件夹,您可以重复此过程。 pyinstaller –onefile greeting.py最终结果是,在 dist 文件夹中将只有一个 saludo.exe 文件,没有任何关联的子文件夹,可以随时复制和共享。
将您的软件打包成一个“干净的”.exe安装程序。
除了 Python 这个特例之外,您可能已经拥有自己的可执行文件或文件集,并希望提供 一个经典的 Windows 安装程序,带有向导、“下一步”和卸载按钮。这时就需要用到 Inno Setup 和 NSIS 之类的工具了。
如今非常常见的情况是,程序包含一个主可执行文件或二进制文件,以及一个用于配置权限、服务或注册表项的 PowerShell 脚本。问题在于,许多用户 他们对运行 PowerShell 脚本持谨慎态度。或者他们有直接阻止这种行为的公司政策。
通常的解决方案是将所有这些内容打包到一个更传统的 .exe 安装程序中。像 Inno Setup 这样的工具允许您创建安装脚本,并在其中定义安装内容。 要复制哪些文件、要写入哪些注册表项、要生成哪些快捷方式,甚至要在后台运行哪些命令 在此过程中。
乍听之下可能有些复杂,的确,第一次使用需要一些学习时间。但一旦你理解了这些脚本的基本结构, 这件事并没有一些咨询顾问说的那么复杂。事实上,Inno Setup 和 NSIS 都具有可视化助手,可以为大多数典型案例生成模板。
因此,安装程序无需用户打开 PowerShell 终端并手动运行脚本,而是自动处理所有操作。对用户而言,体验非常简单。 下载一个 .exe 文件,双击运行,然后按照屏幕上的几个提示操作。.
创建 .exe 文件时常见的错误以及如何避免这些错误
包装过程中有很多常见的陷阱需要注意。如果从一开始就避免这些陷阱, 这样可以避免很多测试失败和用户投诉。 他们不明白为什么这个项目对他们不起作用。
第一个经典例子是绝对路径。如果你在代码中像这样“绑定”路径, "C:/MyUser/Project/data"在你的机器上一切正常,但在几乎任何其他机器上都会失败。黄金法则是使用相对路径,或者从应用程序的安装目录开始构建路径。
另一个常见的错误是忘记添加依赖项:例如 DLL 文件、外部库、Python 模块、配置文件等等。程序启动后,尝试访问某些内容,但未能成功。 它既不包含在 .exe 文件里,也不包含在安装文件夹里,所以程序会崩溃。为了检测这个问题,一个非常有用的方法是创建一个空文件夹,只复制可执行文件,然后从头开始测试。
如何在 Windows 中强制退出程序?第三个常见错误:没有在其他版本的 Windows 系统上测试可执行文件。它可能在你的 Windows 11 电脑上完美运行,但在其他 Windows 系统上却不行。 Windows 10 未更新某些版本 问题就出在这里。如果可以的话,最好在几台机器或虚拟机上安装不同版本进行最小限度的测试。
通常情况下,防病毒软件会在你第一次分享 .exe 文件时将其标记为可疑文件。许多安全引擎对这类文件尤其严格。 没有数字签名的新可执行文件这并不意味着你已经创建了病毒,而是意味着该文件还没有信誉或可信签名。
最后,请记住,一个非常常见的人为错误是假设用户“已经知道该怎么做”。如果您的安装程序没有清楚地解释步骤,或者您的应用程序没有显示相关信息,那么用户就需要自行操作。 出现问题时发出清晰的信息你将不得不回答许多原本可以避免的问题。
如何让你的 .exe 文件看起来专业且安全
如果您希望您的可执行文件具有更“高端”的质感并增强用户的信心,那么有一些细节会产生很大的影响。首先是使用 代表您应用程序的自定义图标Resource Hacker 或 PyInstaller 等工具自带的选项允许您将 .ico 图标嵌入到 .exe 文件中。
如果您认真对待此事,另一个非常重要的步骤是对可执行文件进行数字签名。通过使用代码证书对 .exe 文件进行签名,您是在告诉 Windows 和防病毒程序: 该文件来自可识别的出版商这减少了“未知发布者”等安全警告,有助于让用户安心。
它还提供了完整的安装程序,而不仅仅是简单的可执行文件,这一点也为它加分不少。一个好的安装程序可以 在桌面和“开始”菜单中创建快捷方式,将应用程序注册到系统中,并根据需要安装服务。 并配置一个在“添加或删除程序”中可见的卸载程序。
此外,精心编写安装程序文本(欢迎界面、许可协议、进度信息)能使其更具成品感。这不仅仅关乎它能否正常运行,更重要的是用户能否感受到这一点。 这一切背后是对细节的极度忽视。甚至会影响口碑传播。
最后,别忘了维护一个用于测试变更的开发版本和一个供最终用户使用的稳定版本。这样可以让你…… 尝试新的包装设计、图标或签名 在不危及现有软件用户风险的前提下。
分发你的 .exe 文件时不要吓到用户
可执行文件准备就绪后,就可以分发了。同样,为了确保流畅安全的用户体验,这里也需要做出一些重要决定。首先要选择一个可靠的下载链接位置: 您自己的网站、企业代码库或 GitHub Releases 等平台 这些都是比较常见的选择。
将 .exe 文件上传到任何云服务并通过 WhatsApp 分享链接通常不是个好主意。从信任和信誉的角度来看,最好还是让用户直接查看链接。 一个清晰的页面,解释您正在下载的内容。该项目包含哪些内容以及需要满足哪些要求。
在可执行文件中附带 README 文件或帮助页面是另一个非常实用的小技巧。你可以在其中解释…… 如何安装?首次安装需要遵循哪些步骤?如果杀毒软件显示警告该怎么办? 最低系统要求是什么?
在企业环境中,将安装程序集成到批量部署工具(例如 SCCM、Intune 等)中可能更为理想。在这种情况下,打包完善且文档齐全的 .exe 文件是理想之选。 这大大简化了系统团队的工作。他通常不愿意“不通过代码”运行脚本。
文件来源信息越清晰透明越好。包含版本、构建日期和修改记录等信息有助于…… 用户应该知道自己安装的是什么,以及是否值得更新。 与之前的版本相比。
创建和分发自己的程序的 .exe 文件并非 Windows 高手的专属领域。通过结合 PyInstaller 等工具处理 Python 脚本,以及 Inno Setup 或 NSIS 等解决方案提供的完整安装程序,您可以…… 提供专业、安全、舒适的安装体验避免可疑脚本,最大限度减少与用户的摩擦。
相关文章:Windows 中的 msi 是什么意思?