Windows 使用 PyInstaller 、 Inno Setup 打包 Python 程序
步骤
1. 使用 PyInstaller 打包并添加管理员权限
pyinstaller --uac-admin --onefile your_script.py
或修改 .spec
文件:
exe = EXE(...,
uac_admin=True,
...)
2. 使用 Inno Setup 创建安装程序脚本(.iss)
[Setup]
AppName=MyApp
AppVersion=1.0
DefaultDirName={pf}\MyApp
PrivilegesRequired=admin
OutputDir=userdocs:Inno Setup Output
[Files]
Source: "dist\your_script.exe"; DestDir: "{app}"
[Icons]
Name: "{userdesktop}\MyApp"; Filename: "{app}\your_script.exe"
[Run]
Filename: "cmd.exe"; Parameters: "/c pip install wxPython"; \
Flags: runascurrentuser runhidden; StatusMsg: "Installing Dependencies..."
3. 注意事项及增强方案
-
依赖安装优化
建议将依赖打包进exe(PyInstaller默认行为),若必须运行时安装:
[Run] ; 使用系统Python Filename: "python"; Parameters: "-m pip install wxPython"; \ Flags: runascurrentuser runhidden ; 或指定绝对路径 Filename: "C:\Python39\Scripts\pip.exe"; Parameters: "install wxPython"; \ Flags: runascurrentuser runhidden
-
环境检测
添加 Pascal 脚本检测 Python:
[Code] function InitializeSetup(): Boolean; var ErrorCode: Integer; begin if not RegKeyExists(HKLM, 'SOFTWARE\Python\PythonCore\3.9\InstallPath') then begin MsgBox('Python 3.9 not found!', mbError, MB_OK); Result := False; end else Result := True; end;
-
静默安装依赖
添加
/quiet
参数减少干扰:Filename: "python"; Parameters: "-m pip install wxPython --quiet"
4. 完整操作流程
-
打包 Python 程序
pip install pyinstaller pyinstaller --uac-admin --onefile your_app.py
-
下载并安装 Inno Setup
-
编译安装程序
将脚本保存为
.iss
文件,右键选择 "Compile"
5. 替代方案建议
对于复杂安装逻辑,可考虑以下方案:
-
NSIS 脚本
提供更灵活的系统级操作
-
商业工具
InstallShield/Advanced Installer 提供图形化界面
-
Python 打包方案
使用
cx_Freeze
或py2exe
替代 PyInstaller
6. 安全提示
-
管理员权限操作需明确告知用户
-
从可信源安装 Python 依赖
-
建议使用虚拟环境打包
python -m venv venv venv\Scripts\activate pip install -r requirements.txt pyinstaller ...
通过以上步骤,获得一个具备管理员权限、支持自定义安装路径、自动安装依赖并创建桌面快捷方式的专业安装程序。
来源
- Deepseek