windows下使用python生成安装包(可实现安装和卸载等)

2023-05-16

在实际生活中,每个人都是通过使用安装包的方式对软件进行安装和卸载,这样才能让每个人都不需要懂代码就能使用我们编写的软件。 那么python编写的软件应该怎样实现这个过程尼? 下面就进行详细的讲解。

一、使用python代码生成可执行程序
在windows下就是要将其生成.exe文件。
首先安装:

pip install pyinstaller
#检查pyinstaller安装成功与否:
#只需要执行如下命令:
pyinstaller -v

pyinstaller参数作用
-F 表示生成单个可执行文件
-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧
-c –console, –nowindowed 使用控制台,无界面(默认)
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标
其他参数,可以通过pyinstaller --help查看

开始打包

进入python需要打包的脚本所在目录,然后执行下面的命令即可:
python -F nhdz.py -i favicon.ico -w
执行过程如下图所示:
在这里插入图片描述
打包结果
打包完成后,进入到当前目录下,会发现多了__pycache__、build、dist、nhdz.spec这四个文件夹或者文件,其中打包好的exe应用在dist目录下面,进入即可看到,可以把他拷贝到其他地方直接使用,如下图所示,是打包完成后的目录:
在这里插入图片描述
执行exe应用
因为是exe应用,是可执行文件了,所以直接双击运行即可.
现在生成了可执行程序,但是还不是我们最终需要的文件,这种只是运行,还不能实现在电脑上安装和卸载,还算不上是一个安装包。
下一步就是要把生成的可执行程序变成安装包。
二、生成安装包
在这里就需要一个叫NSIS的软件,NSIS下载。
下面介绍NSIS的使用方式。
启动NSIS程序主界面,选择“可视化脚本编辑器(VNISEdit)”菜单,开始制作自己的安装包。
在这里插入图片描述
选择“使用脚本向导创建新的脚本文件”,确定
在这里插入图片描述
进步脚本向导,下一步
在这里插入图片描述
第一步,这里填写应用程序的一些基本信息,这里的运用程序名称可以更改,中文名也支持,下一步
在这里插入图片描述
第二步,这里是选择安装包的图标,生成的可执行程序名字,程序语言等,使用默认的就可以,不需要修改,也可以修改为自己喜欢的图标和可执行程序名字,程序语言不要修改。
在这里插入图片描述
第三步,选择一些安装时候的效果,可选可不选,下一步
在这里插入图片描述
第四步,指定应用程序的默认目录,授权文件最好空着,默认会有个路径,把它删掉空着就行,不然可能会报错失败,下一步
在这里插入图片描述
第五步,选择要打包的文件,这一步就是把刚刚python生成的可执行程序加进来,如果可执行程序还依赖一些外部的文件或者文件夹,那么也要加进来,可以看到左边那个是添加文件,右边是添加文件夹,添加文件夹的时候要把包含子目录勾上,具体用法,试一次就知道了。这一步很关键,慢点来,弄懂了再继续下一步,下一步
在这里插入图片描述

在这里插入图片描述

第六步,快捷方式的一些设置,下一步
在这里插入图片描述
第七步,设置安装程序之后要运行的内容,下一步
在这里插入图片描述
第八步,卸载信息设置,这一步就是在安装程序的时候会生成一个卸载文件,方便卸载软件,下一步
在这里插入图片描述
完成向导,勾选”保存脚本“,以及”转换文件路径到相对路径“,这一步会把生成安装包的脚本保存下来,同时会要求设置保存路径,最后生成的安装包会和脚本保存在一个路径下。
在这里插入图片描述
这时就可以看到通过向导生成的脚本,可以在这里继续修改脚本
在这里插入图片描述
修改完脚本以后,点击菜单”NSIS“-》“编译并运行”,编译成功后,会在脚本文件路径下生成一个exe文件,安装包制作完成,点击这个exe文件即可完成安装!
在这里插入图片描述1.问:在安装的过程中,如何执行BAT文件?

答:按照上面向导生成的脚本,有这么一段脚本,注意我用红色标注的内容,红色的部分是在文件复制完成以后执行BAT文件的脚本,注意操作步骤,复制文件结束后,再执行,卸载的时候执行BAT文件顺序相反

Section "MainSection" SEC01
  SetOutPath "$INSTDIR\*.*"
  SetOverwrite ifnewer
  File /r "D:\Program Files\HyperSnap6\*.*"
  ExecWait "$INSTDIR\install.bat"
SectionEnd

2.问:如果修改安装文件和卸载文件的图标

答:修改这部分脚本即可

!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

nsis自带的有两个图标,我自己感觉稍微能好看一点点(汗,虽然还是很丑,好吧,凑合着用),修改后的

!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\Orange-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\Orange-uninstall.ico"
 

3.问:怎么让安装程序以管理员权限运行

答:红色标注的内容,是在原有代码的基础上增加的代码,表示以管理员权限执行安装程序

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "Setup.exe"
InstallDir "$PROGRAMFILES\UKey"
ShowInstDetails show
ShowUnInstDetails show
RequestExecutionLevel admin
BrandingText " "

参考文献:Python如何生成windows可执行的exe文件
使用NSIS制作安装包

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows下使用python生成安装包(可实现安装和卸载等) 的相关文章

  • 活动的四种启动模式详解

    android launchMode 目录 android launchMode前言概念说明standardsingleTopsingleTasksingleInstance Codes演示说明standard代码singleTop代码si
  • VS2019切换中英文

    Visual Studio2019语言包切换1 打开安装程序2 选择语言包3 一系列操作 Visual Studio2019语言包切换 忘了设置语言包来着 xff0c 它默认中文了 xff0c 总觉得每次找东西看起来怪怪的 如果已安装了英语
  • Java关键字super解释

    目录 前言 xff08 废话文学 xff09 前言 xff08 定义 xff09 super 之构造方法super 之成员函数super 之成员变量结束语 前言 xff08 废话文学 xff09 又是看了一大堆文字介绍 xff0c 非常系统
  • 程序员的心得体会

    目录 前言工作学习 xff08 正式严肃 xff09 emo转乐观 前言 这是一篇丰富多彩 摸鱼 的文章 一呢是分享一下子自己迈入程序员工作了2个月的感受 xff0c 还有呢就是多方面交谈 xff0c 或许给点人生建议 xff0c 还有说说
  • VisualStudioCode:Java 11 or more recent is required to run. Please download and install a recent JDK

    从7月22日起 xff0c 今后vs code将不再支持用java8运行java插件 xff0c 需要使用java11 才能进行Visual Studio Code的编译 xff1a 解决方法 xff1a 先下载一个java11的jdk j
  • 【GStreamer】MP4文件种提取H264 字节流数据保存

    大家好 xff0c 我是虎哥 xff0c 简短的分享一个小技巧 xff0c 也作为自己的记录留用 一般MP4文件和MKV文件都是我么从网络上比较容易获取的 xff0c 但是我们用来做目标识别和检测的视频输入需要单纯的视频文件 xff0c 下
  • A-咕咕东的奇遇

    题目 xff1a 咕咕东是个贪玩的孩子 xff0c 有一天 xff0c 他从上古遗迹中得到了一个神奇的圆环 这个圆环由字母表组成首尾相接的环 xff0c 环上有一个指针 xff0c 最初指向字母a 咕咕东每次可以顺时针或者逆时针旋转一格 例
  • A-DDL的恐惧

    题目 xff1a ZJM 有 n 个作业 xff0c 每个作业都有自己的 DDL xff0c 如果 ZJM 没有在 DDL 前做完这个作业 xff0c 那么老师会扣掉这个作业的全部平时分 所以 ZJM 想知道如何安排做作业的顺序 xff0c
  • C-平衡字符串

    题目 xff1a 一个长度为 n 的字符串 s xff0c 其中仅包含 Q W E R 四种字符 如果四种字符在字符串中出现次数均为 n 4 xff0c 则其为一个平衡字符串 现可以将 s 中连续的一段子串替换成相同长度的只包含那四个字符的
  • week11-作业(必做题)

    文章目录 A 必做题11 1题目 xff1a 输入格式 xff1a 输出格式 xff1a 样例输入 xff1a 样例输出 xff1a 题目分析 xff1a 代码 xff1a B 必做题11 2题目 xff1a 输入格式 xff1a 输出格式
  • CSP-M3

    文章目录 T1 瑞神的序列题目描述 xff1a 输入描述 xff1a 输出描述 xff1a 样例输入 xff1a 样例输出 xff1a 数据组成 xff1a 题目分析 xff1a 代码 xff1a T2 消消乐大师 Q老师题目描述 xff1
  • week12-作业-必做题

    文章目录 A 必做题 1题目 xff1a Input xff1a Output xff1a Sample Input xff1a Sample Output xff1a 题目分析 xff1a 代码 xff1a B 必做题 2题目 xff1a
  • week13-作业-必做题

    文章目录 A TT的神秘任务1题目 xff1a Input xff1a Output xff1a Example xff1a Input xff1a Output xff1a 题目分析 xff1a 代码 xff1a B TT的神秘任务2题目
  • week13-T1-T2

    文章目录 A 1 T1题目 xff1a 输入格式 xff1a 输出格式 xff1a Sample Input1 xff1a Sample Output1 xff1a Sample Input 2 xff1a Sample Output 2
  • week15-字符串

    目录 A ZJM 与霍格沃兹 必做题 xff09 Bkdr Hash算法 题目 Input Output Sample Input Sample Output 题目分析 xff1a 代码 xff1a B ZJM 与生日礼物 xff08 选做
  • 富文本编辑器wangEditor回显问题

    回显时渲染dom报错问题 xff1a 富文本编辑器在回显html时偶尔会报以下错误 xff1a Error in v on handler 34 Error Cannot find a descendant at path 1 1 0 in
  • 【Deepstream学习】 TX1模块中C++ Sample application 2详细测试讲解

    大家好 xff0c 我是虎哥 xff0c 使用NVIDIA Jeston TX1 也有很长一段时间了 xff0c 由于这是基本停产的一个模块 xff0c 其实自己也担心有很多官方的demo无法适配跑起来了 xff0c 所以花了点时间 xff
  • ECS设置虚拟内存

    1 查看内存 free m 2 设置 mdkir swap 创建目录 dd if 61 dev zero of 61 swap swapadd bs 61 1024 count 61 3036432 设置为3G mkswap swap sw
  • 获取IP地址信息的API合集

    今天给大家分享一些获取IP地址信息的API合集 一 ip cn查询网获取当前客户端IP二 ip查询网获取当前客户端IP三 百度获取IP地址信息四 本站获取当前客户端IP信息五 其他平台获取IP地址信息接口一 埃文科技平台接口二 第三方个人开
  • Linux第六章:4.rm命令使用方法、linux使用命令复制文件到指定目录、如何复制文件夹及其内容到指定目录,如何在复制到指定文件夹时强制覆盖原有同名文件

    零 rm 命令使用方法 1 删除一个文件 xff08 有提醒是否删除 xff09 span class token function rm span 文件名 2 删除一个文件 xff08 强制删除 xff0c 没有提醒 xff09 span

随机推荐