1、Python程序打包
本教程主要用于将python程序(*.py)打包成windows系统下的可执行文件(*.exe)。
参考网站:http://www.pyinstaller.org/(pyinstaller下载安装);https://pyinstaller.readthedocs.io/en/v3.3.1/usage.html(使用教程)
方式①:pyinstaller
[options] script [script …] | specfile
e.g:-i表示给软件打包一个图标image.ico;-F表示只打包成一个exe文件;-w表示打包成运行时带窗口,无后台的exe文件(即不可以在后台输命令,如果需要输命令,如密码之类的,就不要带-w)
pyinstaller -i image.ico myscript.py -F -w
方式②:pyinstaller
options name.spec
name.spec文件内容如下(e.g):
block_cipher = None
a = Analysis(['minimal.py'],
pathex=['/Developer/PItests/minimal'],
binaries=None,
datas=None,
hiddenimports=[],
hookspath=None,
runtime_hooks=None,
excludes=None,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,... )
coll = COLLECT(...)
详细请参考网站:https://pyinstaller.readthedocs.io/en/v3.3.1/spec-files.html
补充一个pyqt的错误:"could not find or load the Qt platform plugin"
解决方案:https://github.com/pyinstaller/pyinstaller/pull/2991
按照解决方案中提交的内容修改文件即可:
①修改qt.py文件
②修改rthooks.bat
2、C++程序打包
本教程主要用于将C++项目(project)打包成一个可执行文件(*.exe),使得我们的project在任何未配置特定环境(如opencv)的windows系统中都可以执行,打包后按照正常软件安装即可使用。
参考网站:https://www.cnblogs.com/lizhigang/p/6877590.html?utm_source=itdadao&utm_medium=referral
软件:Inno Setup 编译器
打开Inno Setup 编译器,file->new-next->输入自己的Application name……等信息(可选默认)->next->到Application main executable file时,选择自己C++ project中编译运行产生的exe文件(我选的release下的),如果程序中用到了dll文件,或其他额外的文件,则在other application files中添加(Add files/Add folder)->Application Shortcuts选上Create an Uninstall shortcut in the Start Menu folder->选定输出文件夹(Custom compiler output folder)->其他默认即可
3、将exe和dll文件打包成单一的启动文件
参考网站:https://blog.csdn.net/update7/article/details/78796494
正常情况下按照这个流程走就行,但其中有两个自解压方法不能满足我的要求!!!
1)“模式”中设置“解包到临时文件夹”,其实就是解包到电脑用户的临时文件夹,即C:\Users\用户名\AppData\Local\Temp\文件夹下,不知道如何更改这个临时文件夹;
2)若不采用临时文件夹模式,在“常规”中可以设置具体的解压路径,但文件会先被解压出来,不能隐藏执行。
由于我的程序需要读取一个随时会更改的“配置文件”,而且读取的是“配置文件”的相对路径。所以我想要得效果是:1)的情况下,确定临时文件夹路径;2)的情况下,隐藏自解压文件夹。这样方可读取我的“配置文件”。
当然,还有个很low的方法,就是将程序中读取“配置文件”的代码确定为读取“配置文件”的绝对路径。