NSI程序打包脚本文件编写教程
引言
NSIS (Nullsoft Scriptable Install System) 是一个专业开源的制作 windows 安装程序的工具。我们通过HM NSIEDIT编写好脚本、编译即可生成exe安装包。安装过程中可以配置其安装包图标、名称、出版人、网站等。此外,还可以设置程序开机自启动、管理员权限运行等给基于注册表的操作,也可以运行批处理文件(bat文件)进行系统模块的安装。
1、所需工具
1:NSIS 下载地址: NSIS: Nullsoft Scriptable Install System download | SourceForge.net
2:HM NIS Edit 脚本编辑工具:HM NIS Edit: A Free NSIS Editor/IDE (sourceforge.net)
2、示例
关于NSIS网上有很多教程,不在此赘述。我将主要记录在使用过程中出现的问题和一些常用的语法等。
2.1、设置安装完运行、开机自启动
在!insertmacro MUI_PAGE_FINISH 上方插入代码:
//是否安装完运行勾选框
!define MUI_FINISHPAGE_RUN "$INSTDIR\net48\MetalBurrDetectionSys.exe"
//开机自启动勾选框
!define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_Function AutoBoot
!define MUI_FINISHPAGE_SHOWREADME_TEXT "开机自启动"
Function AutoBootWriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MetalBurrKey" '"$INSTDIR\net48\MetalBurrDetectionSys.exe"'
FunctionEnd
记得在卸载时删除键值
Function un.onUninstSuccessHideWindowDeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MetalBurrKey"MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEnd
2.2、打包文件匹配
利用脚本向导会帮助我们快速构建打包程序,但是文件罗列的太过详细,有事我们只需要打包Debug文件夹中 dll 和 exe 文件即可,而且后续可能会增加或修改类库和运行程序的名称,此时用文件名匹配更为合适。
SetOutPath "$INSTDIR"SetOverwrite ifnewerFile "software\bin\Debug\*.dll"File "software\bin\Debug\*.exe"
如果你想包含子目录及其所有指定格式文件,如下
SetOutPath "$INSTDIR"SetOverwrite ifnewerFile -r "software\bin\Debug\*.dll"File -r "software\bin\Debug\*.exe"
删除文件也有类似的方法:
RMDir /r "$INSTDIR\net48"
RMDir /r "$INSTDIR"
2.3、注册表操作、管理员启动
在Post阶段,向导会为我们自动生成程序相关键值,我们也可以根据需要插入额外键值 ,如需要管理员启动
Section -PostWriteUninstaller "$INSTDIR\uninst.exe"WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\net48\MetalBurrDetectionSys.exe"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\net48\MetalBurrDetectionSys.exe"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}";针对当前用户有效WriteRegStr HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\net48\MetalBurrDetectionSys.exe" "RUNASADMIN";针对所有用户有效WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\net48\MetalBurrDetectionSys.exe" "RUNASADMIN"
SectionEnd
管理员启动设计如下代码:
;针对当前用户有效WriteRegStr HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\net48\MetalBurrDetectionSys.exe" "RUNASADMIN";针对所有用户有效WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\net48\MetalBurrDetectionSys.exe"
2.4、快捷键
我在使用生成快捷键时,会出现点击快捷键无效,或则在开始菜单里没有生成对应的目录和快捷键,并且快捷键也无效的情况,当我把程序的主运行exe放在最后写入时即可解决。
生成桌面快捷键、开始菜单目录及程序和卸载快捷键代码如下:
Section -AdditionalIcons!insertmacro MUI_STARTMENU_WRITE_BEGIN ApplicationCreateDirectory "$SMPROGRAMS\$ICONS_GROUP"CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\net48\MetalBurrDetectionSys.exe"CreateShortCut "$DESKTOP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\net48\MetalBurrDetectionSys.exe"CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd
2.5、执行bat脚本
我主要用到两种:等待并显示终端、等待不显示终端
;等待不显示终端
nsExec::Exec '$INSTDIR/removeWeb.bat'
;等待并显示终端
ExecWait '$INSTDIR/removeWeb.bat'
2.6、完整示例
; Script generated by the HM NIS Edit Script Wizard.; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "某某软件"
!define PRODUCT_VERSION "1.0"
!define PRODUCT_PUBLISHER "某某公司"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\MetalBurrDetectionSys.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
!define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir"; MUI 1.67 compatible ------
!include "MUI.nsh"; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON "某某软件\Resources\maociLOGO.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "softwarelicense.rtf"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Start menu page
var ICONS_GROUP
!define MUI_STARTMENUPAGE_NODISABLE
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "某某软件"
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}"
!insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\net48\MetalBurrDetectionSys.exe"
!define MUI_FINISHPAGE_SHOWREADME
!define MUI_FINISHPAGE_SHOWREADME_Function AutoBoot
!define MUI_FINISHPAGE_SHOWREADME_TEXT "开机自启动"
!insertmacro MUI_PAGE_FINISH; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES; Language files
!insertmacro MUI_LANGUAGE "SimpChinese"; MUI end ------Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}安装包 ${PRODUCT_VERSION}.exe"
InstallDir "D:\Program Files\某某软件"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails showRequestExecutionLevel admin;打包帮助文档
Section "Helpbook" SEC01;执行脚本nsExec::Exec '$INSTDIR/removeWeb.bat'SetOutPath "D:\HelpFile\某某软件\dist"File /r "..\EditorRunHelpFile\BatteryHelpFile\docs\.vuepress\dist\*.*"nsExec::Exec '$INSTDIR/iis.bat'
SectionEnd;打包主程序文件
Section "MainSection" SEC02;停止进程nsExec::Exec "taskkill /im MetalBurrDetectionSys.exe /f"SetOutPath "$INSTDIR\SystemConfig"SetOverwrite ifnewerFile /r "某某软件\bin\Debug\SystemConfig\*.json"SetOutPath "$INSTDIR"SetOverwrite ifnewerFile "某某软件\bin\Debug\*.*"SetOutPath "$INSTDIR\net48"SetOverwrite ifnewerFile /r "某某软件\bin\Debug\net48\*.dll"File /r "某某软件\bin\Debug\net48\*.json"File /r "某某软件\bin\Debug\net48\*.config"File /r "某某软件\bin\Debug\net48\*.WH"File /r "某某软件\bin\Debug\net48\*.png"File "A:\目录\*.dll"File /r "某某软件\bin\Debug\net48\*.exe"SectionEndSection -PostWriteUninstaller "$INSTDIR\uninst.exe"WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\net48\MetalBurrDetectionSys.exe"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\net48\MetalBurrDetectionSys.exe"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}";管理员启动;针对当前用户有效WriteRegStr HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\net48\MetalBurrDetectionSys.exe" "RUNASADMIN";针对所有用户有效WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\net48\MetalBurrDetectionSys.exe" "RUNASADMIN"
SectionEnd;快捷键
Section -AdditionalIcons!insertmacro MUI_STARTMENU_WRITE_BEGIN ApplicationCreateDirectory "$SMPROGRAMS\$ICONS_GROUP"CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\net48\MetalBurrDetectionSys.exe"CreateShortCut "$DESKTOP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk" "$INSTDIR\net48\MetalBurrDetectionSys.exe"CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk" "$INSTDIR\uninst.exe"!insertmacro MUI_STARTMENU_WRITE_END
SectionEndSection Uninstall!insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP;执行脚本 等待不显示终端nsExec::Exec '$INSTDIR/removeWeb.bat'Delete "$INSTDIR\uninst.exe"Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall.lnk"Delete "$DESKTOP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk"Delete "$SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk"RMDir "$SMPROGRAMS\$ICONS_GROUP"RMDir /r "D:\HelpFile\某某软件\dist"RMDir /r "$INSTDIR\SystemConfig"RMDir /r "$INSTDIR\net48"RMDir /r "$INSTDIR"DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MetalBurrKey"SetAutoClose true
SectionEnd;函数放在最后
Function AutoBootWriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MetalBurrKey" '"$INSTDIR\net48\MetalBurrDetectionSys.exe"'
FunctionEndFunction un.onUninstSuccessHideWindowDeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MetalBurrKey"MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。"
FunctionEndFunction un.onInitMessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,其及所有的组件?" IDYES +2Abort
FunctionEnd
3、脚本
自动安装IIS服务
@echo off
cd /d "%~dp0"echo Installing IIS...
echo Wait a moment...
start /w pkgmgr /iu:IIS-WebServerRole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPIecho Done.
删除网站
@echo off
setlocal:: 设置网站名称
set SITE_NAME=WH_MetalBurr:: 使用appcmd.exe删除网站
%windir%\system32\inetsrv\appcmd delete site %SITE_NAME%endlocal
echo Done.
相关文章:
![](https://i-blog.csdnimg.cn/direct/ed03aa0a680342bbaec05e6eb92b8401.png)
NSI程序打包脚本文件编写教程
引言 NSIS (Nullsoft Scriptable Install System) 是一个专业开源的制作 windows 安装程序的工具。我们通过HM NSIEDIT编写好脚本、编译即可生成exe安装包。安装过程中可以配置其安装包图标、名称、出版人、网站等。此外,还可以设置程序开机自启动、管理员权限运行…...
![](https://i-blog.csdnimg.cn/direct/58851bf7e4464385aa1fe861c455313a.png)
[LitCTF 2023]1zjs
很有意思的一道题,打开题目环境之后F12可以看到 点击那个蓝色下划线的就能看到: 然后访问: /fk3f1ag.php就可以看到: 然后将这些复制到控制台然后回车就能得到flag。...
![](https://i-blog.csdnimg.cn/direct/7e5fa2637cf7489ab17075fbcf978843.png)
MCU复位RAM会保持吗,如何实现复位时变量数据保持
在使用MCU时,通常大家默认MCU复位时RAM会被复位清零,那实际MCU复位时RAM是什么状态?如何让mcu复位时RAM保持不变呢? MCU复位有电源复位、Standby复位、内核复位、看门狗复位、引脚复位等。 其中内部会有掉电动作的复位有电源复位…...
![](https://i-blog.csdnimg.cn/direct/46797d4dbe854c0eb7bb65e918561956.png)
解决window 端口的占用问题
netstat -nao | findstr "5554" taskkill -pid 5076 -f 本文资料来自 https://cloud.tencent.com/developer/article/1703982...
![](https://i-blog.csdnimg.cn/direct/0dd2ae1a8bc7456f9c13a0f318d77dc6.png)
【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署
【Datawhale AI夏令营第四期】 浪潮源大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署 什么是RAG: 我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗?Kimi学了这些资料以后,根据这里面的信息综…...
![](https://www.ngui.cc/images/no-images.jpg)
PyTorch 基础学习(10)- Transformer
系列文章: 《PyTorch 基础学习》文章索引 介绍 Transformer模型是近年来在自然语言处理(NLP)领域中非常流行的一种模型架构,尤其是在机器翻译任务中表现出了优异的性能。与传统的循环神经网络(RNN)不同&a…...
![](https://i-blog.csdnimg.cn/direct/2696fdb5b4b1400f8c8c6f74f6867a65.jpeg)
mybatis-plus使用
目录 1. 快速开始 1. 创建user表 2. 插入几条数据 3. 创建一个新的springboot项目 4. 导入mybatis-plus依赖 5. 在配置文件中进行配置 6. 编写实体类 7. 编写Mapper 接口类 8. 添加 MapperScan 注解 9. 测试 编辑2. CRUD 1. 插入一条语句 2. 根据主键id删除一条记录 3. 根据…...
![](https://www.ngui.cc/images/no-images.jpg)
ant-design-vue快速上手指南及排坑攻略
前言 ant-design-vue是Ant Design的Vue实现,旨在为Vue用户提供一套企业级的UI设计语言。本文将带你快速上手ant-design-vue,并在实践中分享一些常见的坑及解决方法。遵循本文档,让你轻松搭建优雅的Vue应用。 一、环境准备 在开始之前&…...
![](https://i-blog.csdnimg.cn/direct/8e64fab0f076420088b63f2695369151.png)
【GitLab】使用 Docker 安装 3:gitlab-ce:17.3.0-ce.0 配置
参考阿里云的教程docker的重启 sudo systemctl daemon-reload sudo systemctl restart docker配置 –publish 8443:443 --publish 8084:80 --publish 22:22 sudo docker ps -a 當容器狀態為healthy時,說明GitLab容器已經正常啟動。 root@k8s-master-pfsrv:~...
![](https://i-blog.csdnimg.cn/direct/8a9292840ec94feb9b6f43d820ffd410.png)
多线程(4)——单例模式、阻塞队列、线程池、定时器
1. 多线程案例 1.1 单例模式 单例模式能保证某个类在程序中只存在唯一一份实例,不会创建出多个实例(这一点在很多场景上都需要,比如 JDBC 中的 DataSource 实例就只需要一个 tip:设计模式就是编写代码过程中的 “软性约束”&am…...
![](https://img-blog.csdnimg.cn/img_convert/a3fef49d7bc86b6dee724494717e4e7f.png)
告别电量焦虑,高性能65W PD快充芯片HUSB380A打造梦中情【头】
市面上的充电器越来越卷,让人眼花缭乱。压力同样也给到了快充芯片行业,要在激烈的市场竞争中脱颖而出,快充芯片必须集高功率、高性价比与广泛的兼容性等于一身。 基于此,慧能泰推出了新一代高性能PD Source产品——HUSB380A。 图…...
![](https://i-blog.csdnimg.cn/direct/5dc54937dd734ec29f7ab057052192a1.png)
vulnhub靶场 — NARAK
下载地址:https://download.vulnhub.com/ha/narak.ova Description:Narak is the Hindu equivalent of Hell. You are in the pit with the Lord of Hell himself. Can you use your hacking skills to get out of the Narak? Burning walls and demons are around every cor…...
![](https://i-blog.csdnimg.cn/direct/66672baa8b144f4295eb207a4b0d5b84.png)
RabbitMQ如何保证消息不丢失
RabbitMQ消息丢失的三种情况 第一种:生产者弄丢了数据。生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能。 第二种:RabbitMQ 弄丢了数据。MQ还没有持久化自己挂了。 第三种…...
![](https://i-blog.csdnimg.cn/direct/abe98c388596471990a0e98719fc9f81.png)
(亲测有效)SpringBoot项目集成腾讯云COS对象存储(1)
目录 一、腾讯云对象存储使用 1、创建Bucket 2、使用web控制台上传和浏览文件 3、创建API秘钥 二、代码对接腾讯云COS(以Java为例) 1、初始化客户端 2、填写配置文件 3、通用能力类 文件上传 测试 一、腾讯云对象存储使用 1、创建Bucket &am…...
![](https://i-blog.csdnimg.cn/direct/a7960e672f25463da6ab3981fb8b4cc6.jpeg)
无人机之故障排除篇
一、识别故障 掌握基本的无人机系统知识,遵循“先易后难、先外后内、先软件后硬件”的原则进行故障识别。一旦发现故障,立即停止飞行,避免进一步损坏。 二、机械部件维修 对于机身裂痕、螺旋桨损坏等情况,根据损坏程度更换相应部…...
![](https://www.ngui.cc/images/no-images.jpg)
深入理解Python常见数据类型处理
目录 概述数字类型 整数(int)浮点数(float)复数(complex) 字符串(str) 字符串基本操作字符串方法 列表(list) 列表基本操作列表方法列表推导式 元组…...
![](https://img-blog.csdnimg.cn/img_convert/38b0187afe4489bcbaf5cd6bdedac97c.png)
最佳实践:CI/CD交付模式下的运维展望丨IDCF
李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员 一、DevOps现状 据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度…...
![](https://img-blog.csdnimg.cn/img_convert/d7429aed5304b090f6a1ce1c96d1deb1.png)
Flat Ads:开发者如何应对全球手游市场的洗牌与转型
2023年下半年至2024年上半年,中国手游的海外市场表现经历了显著变化,开发者要如何应对全球手游市场的洗牌与转型?本篇文章我们将结合相关行业白皮书的最新数据对中国手游出海表现进行分析与洞察。 一、中国手游海外市场表现 根据Sensor Tower《2024年海外手游市场洞察》最新…...
![](https://img-blog.csdnimg.cn/img_convert/384ed1e1fb0c55967558bd55b3fc0c18.jpeg)
ai取名软件上哪找?一文揭秘5大ai取名生成器
在这个世界上,每一个新生命的到来都是一份奇迹,无论是一个新生儿的第一声啼哭,还是一只宠物的第一次摇尾巴,都充满了无限的希望和喜悦。 然而,给这个小生命起一个响亮、独特且富有意义的名字,往往让人煞费…...
![](https://i-blog.csdnimg.cn/direct/7549a9c15e0d4920bd37658648cc9182.png)
ppt转换成pdf文件,这5个方法一键搞定!小白也能上手~
不管是工作上还是学习上,我们都会遇到转换文档格式的问题。比如常见的pdf转word,ppt转pdf,图片转pdf等。 很多软件都有自带的转换功能可以实现,但是需要保证转换后不乱码,且清晰度足够的方法还是少见的。本文整理了几个…...
![](https://img-blog.csdnimg.cn/8d79dbf3a2b74d378c6ddd8befa5f7a1.png)
中国每个软件创业者都是这个时代的“黑悟空”
作者 | 白鲸开源CEO 郭炜 我作为一个具有30游龄而20年都不碰游戏的游戏玩家,最近为了《黑神话:悟空》(简称,黑悟空),不但花重金更新了显卡,还第一次下载了Steam并绑定了支付,为的就是支持这个第…...
![](https://i-blog.csdnimg.cn/direct/de3a98da19c24442bda424208f0089ea.png)
解决Qt多线程中fromRawData函数生成的QByteArray数据不一致问题
解决Qt多线程中fromRawData函数生成的QByteArray数据不一致问题 目录 🔔 问题背景📄 问题代码❓ 问题描述🩺 问题分析✔ 解决方案 🔔 问题背景 在开发一个使用Qt框架的多线程应用程序时,我们遇到了一个棘手的问题&…...
![](https://i-blog.csdnimg.cn/direct/4db1bb8cb73c4b44badd847ce14f0f3b.png)
datax关于postsql数据增量迁移的问题
看官方文档是不支持的 数据源及同步方案_大数据开发治理平台 DataWorks(DataWorks)-阿里云帮助中心 (aliyun.com) 看了下源码有个postsqlwriter 看了下也就拼接sql 将 PostgresqlWriter中的不允许更新先注释了 让他过去先 然后看到 WriterUtil中的对应方法 getWriteTemplat…...
![](https://i-blog.csdnimg.cn/direct/48f08c2c6d42480aa32fb59fbaba8b19.png)
【Go】实现字符切片零拷贝开销转为字符串
package mainimport ("fmt""unsafe" )func main() {bytes : []byte("hello world")s : *(*string)(unsafe.Pointer(&bytes))fmt.Println(s)bytes[0] Hfmt.Println(s) }slice的底层结构是底层数组、len字段、cap字段。string的底层结构是底层…...
![](https://www.ngui.cc/images/no-images.jpg)
[sqlserver][sql]sqlserver查询执行过的历史sql
SQL是一个针对SQL Server数据库的查询执行过的历史 select * from (SELECT *FROM sys.dm_exec_query_stats QS CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) ST ) a where a.creation_time >2018-07-18 17:00:00 and charindex(delete from ckcdlist ,text)>0 an…...
![](https://img-blog.csdnimg.cn/img_convert/e23c3116f07dcc5ab68a1b45def11317.jpeg)
python中n次方怎么表示
Python中的n次方用pow()方法来表示,pow()方法返回 xy(x的y次方)的值。 语法 以下是 math 模块 pow() 方法的语法: import math math.pow( x, y ) 内置的 pow() 方法 pow(x, y[, z]) 函数是计算x的y次方,如果z在存在&…...
![](https://i-blog.csdnimg.cn/direct/4697573aae0e42c8aa4c7f7ecdbdfa2d.png)
Java数组怎么转List,Stream的基本方法使用教程
Stream流 Java 的 Stream 流操作是一种简洁而强大的处理集合数据的方式,允许对数据进行高效的操作,如过滤、映射、排序和聚合。Stream API 于 Java 8 引入,极大地简化了对集合(如 List、Set)等数据的处理。 一、创建 Stream 从集合创建: List<String> list = Ar…...
![](https://www.ngui.cc/images/no-images.jpg)
2024-07-12 - 基于 sealos 部署高可用 K8S 管理系统
摘要 Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够像使用个人电脑一样简单地使用云。 操作实践 1、服务器规划 kubernetes集群大体上…...
![](https://img-blog.csdnimg.cn/img_convert/4cf6e25d92e11afef4e7772a69d96e10.jpeg)
Ps:首选项 - 单位与标尺
Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K Photoshop 首选项中的“单位与标尺” Units & Rulers选项卡允许用户根据工作需求定制 Photoshop 的测量单位和标尺显示方式。这对于保持工作的一致性和精确性,尤其是在跨设备或跨平台…...
![](https://i-blog.csdnimg.cn/direct/505285e09d914efea4c984658f076dbd.png)
DiskDigger(文件恢复工具) v2.0.3 中文授权版
DiskDigger中文版是一款实用文件恢复工具,它能从任何媒介中恢复误删除的文件。支持硬盘、USB 闪存盘、闪存卡(SD/CF/MMS)、CD、DVD 和软盘等。支持恢复任何格式的文件。DiskDigger 能彻底的扫描每个扇区来跟踪文件,从而最大限度恢复挽回文件信息。 软件…...
![](/images/no-images.jpg)
网站新建设请示/常州网站优化
地图概括又称制图综合。地图编制中地图内容取舍和简化的原理与方法。通过有目的地取舍和简化,表示制图区域或制图对象最主要的、实质性的特征和分布规律。地图内容取舍包括根据地图用途确定地图上所需要表示的内容和指标,也包括地图上的点状、线状地物与…...
![](https://img-blog.csdnimg.cn/img_convert/5554bcfb0c61b180b93d4293a0a03521.png)
商城网站建设定制网站建设/百度推广河南总部
展开全部public/private/protected类型(四类八种)。变量的定义必须严格按照标识符的命名规则,即0~9数字e68a843231313335323631343130323136353331333433663036、字母、下滑线、$等组成,且首字母不能是数字、不能是java关键字。首字母必须小写࿰…...
![](https://img-blog.csdnimg.cn/img_convert/691e9f944fa18032336584891158f227.png)
网站备案名称更改/武汉seo公司出 名
首先先创建一个班学生的信息,并插入一些数据来解释用法:create table student(id int not null,name varchar(20) not null,chinese float(5,2) not null default 0.0,math float(5,2) not null default 0.0,english float(5,2) not null default 0.0);i…...
![](/images/no-images.jpg)
西安专业网站开发公司/学seo推广
1. Vue.js devtools 用于开发调试Vue.js的一个必备插件。可以在Chrome中的扩展程序中直接安装,也可以本地文件的方式安装。 2. vue-lazyload 图片懒加载 插件地址:https://github.com/hilongjw/vue-lazyload demo:http://hilongjw.github.…...
![](https://img-blog.csdnimg.cn/20201225104555412.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h0MTg5NzE0OTIyNDM=,size_16,color_FFFFFF,t_70)
请别人做网站需要注意什么/网站改版seo建议
vs2015编译报错: 错误 C4996 ‘inet_addr’: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings libharmorobotservice 解决方式: SDL改为否...
![](https://img-blog.csdnimg.cn/img_convert/bf664fbc262a7b5e312731d8e463dddc.png)
wordpress自动登录/搜索量查询百度指数
这篇文章主要介绍了CSS子元素跟父元素的高度一致的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧绝对定位方法:(1)将父元素设置为相对定位&…...