使用NSIS制作一个多功能的工具

本文工具完整的下载链接如下:

阿里云盘链接(有源码):https://www.aliyundrive.com/s/fTSZMmQc4WM

百度网盘链接:https://pan.baidu.com/s/1QnoYc4BKsLswKhbij_Do8g ,提取码:r8lv 

以我自己的工具需求,完整的介绍如下:

一,工具需求简介

平时自己办公和处理问题,经常使用todesk远程局点环境,此时往往涉及到如下需求

1,需要特定的工具测试局点网络环境

2,禁用windwos自动更新服务解决问题(在云桌面中会引起很多问题)

3,卸载windows内置应用,以及深度优化系统,比如在和友商PK时

4,启用业务功能上诸多功能

5,分析故障系统各项指标(集成各种分析工具)

6,解析业务上的加密配置文件

7,快速共享本机文件夹(极大的利于定位问题,传递文件)

上述功能通常可以是一些脚本或者第三方小程序,因此需要一个工具统一满足上述需求,于是可以使用NSIS工具制作成为可行的方法,并且打包出来的小程序体积很小。

NSIS简介:

NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能。这如其名字所指出的那样,NSIS 是通过它的脚本语言来描述安装程序的行为和逻辑的。NSIS 的脚本语言和通常的编程语言有类似的结构和语法,但它是为安装程序这类应用所设计的。
 

二,制作的工具使用说明:

本工具支持win7/win10/winserver(server 2012及以上),但未在所有版本上广泛验证,因此无法对工具的功能性、安全性、可靠性做出绝对的保证,使用时风险自负。

按照上述功能需求,实现功能如下(共12项,实际上能实现的功能多余12个)

1,启/禁用任务管理器

将禁用的任务管理器启用,如果已经启用,执行后效果则为禁用

2,禁用系统自动更新

将彻底禁用windows update服务的功能(不支持win7),不再下载系统补丁

注意:

  1. 执行后重启系统生效,且不支持禁用win10家庭版
  2. 必须在windows未检测到补丁的情况下执行本功能项(如下图),如果已经检测到补丁,请先将其完成更细。

3,优化系统

该功能主要涉及以下三方面, 期望于提升性能和体验

  1. 优化win10/winserver系统UI;关闭不必要的性能消耗服务,视觉特效;以及加强安全,网络策略等,

  1. 禁用win10预留存储和自动更新服务,对于大于等于1903的win10版本,可以提升C盘剩余空间7G以上。
  2. 清除系统缓存,临时文件,清空回收站,系统log等

注意:

1)本功能不支持win7,执行后需重启系统一次

2)被优化的系统C盘至少应保留30%或者10G以上剩余空间

4,精剪系统

该功能用于卸载windows 10不常用的内置应用,云桌面教育场景几乎不太可能使用。精简后的系统类似于LSTC系列windows版本,有利于提升性能体验,但同时保留了应用商店,图片浏览,音、视频相关,Edge浏览器等重要而基本的应用。

注意:执行后需重启系统一次

卸载的应用列表如下:

OneDrive

3DBuilder

AppConnector

BingFinance

BingFoodAndDrink

BingHealthAndFitness

BingMaps

BingNews

BingSports

BingTranslator

BingTravel

BingWeather

CommsPhone

ConnectivityStore

FreshPaint

GetHelp

Getstarted

HelpAndTips

Media.PlayReadyClient.2

Messaging

Microsoft3DViewer

MicrosoftOfficeHub

MicrosoftPowerBIForWindows

MicrosoftSolitaireCollection

MicrosoftStickyNotes

MinecraftUWP

MixedReality.Portal

MSPaint

NetworkSpeedTest

OfficeLens

Office.OneNote

Office.Sway

OneConnect

People

Print3D

SkypeApp

Todos

Wallet

Whiteboard

WindowsAlarms

windowscommunicationsapps

WindowsFeedbackHub

WindowsMaps

WindowsPhone

WindowsReadingList

WindowsScan

WinJS.1.0

WinJS.2.0

YourPhone

Xbox游戏相关

5,测试网络

勾选启动后将直接弹出CMD框,根据提示可测试ICMP,TCP,UDP协议的网络连通性、延迟及其组播测试。

6,系统分析

勾选启用后将直接弹出CMD框,直接键入下列程序名字即可启用程序

1)phash-计算文件MD5,SHA1等值

2)procexp-资源利用以及进程分析

3)pboot-引导扇区维护工具

4)rufus-u盘引导盘制作工具(3.8版本)

5)putty-服务器远程工具

6)psftp-数据传输工具

7)poolmon-内存泄漏分析工具

8)tcping-网络检测工具

输入phelp获取使用帮助

7,共享本机C盘

内置hfs程序搭建Http File Server,采用http协议进行数据传输,重要说明如下:

1)可以通过其他电脑的浏览器输入本机IP,访问到本机C盘所有文件

2)退出voitools工具需要先关闭hfs.exe程序

3)如何结束Http File Server?

A)通过右下角HFS图标退出

B)任务管理器结束hfs.exe进程

C)重启本机系统

8,禁用厚存储模式

在管理平台虚拟机或者终端侧客户机状态执行后,镜像在终端启动后将禁止vhd差分盘扩充,镜像文件将以精简存储模式运行

9,解密NextCloud.info

解密VOI NextCloud.info配置文件,该文件必须和voitools工具同一目录

10,设置虚拟内存

本功能要求VOI的winswap盘(数据盘)空间已经扩容到合理的数值,在此基础上自动设置推荐的虚拟内存数值,根据不同的终端内存值,具体虚拟内存值设置如下:

2G的VOI终端:4000-4600mb

4G的VOI终端:5200-5800mb

6G的VOI终端:6500-7200mb

8G的VOI终端:8800-9600mb

其他情况则为:10800-11800mb

说明:

1)各具体规格的终端winswap盘必须大于上述对应的虚拟内存值

2)VOI镜像在管理平台(还是虚拟机时)或者已下发到终端侧时均可使用本选项

11,释放空存储(慎用,耗时)

释放空存储的目的是为了压缩vhd文件占用大小,只能对C盘和vhd一级镜像作用,并且通过工具释放的(已经删除)数据任意手段无法恢复。

  1. 首先在windows客户系统中执行该选项,该过程耗时,伴随着C盘空间逐渐变小直至恢复到开始时的状态
  2. 接着在终端管理机后端对目标vhd文件执行如下命令(仅示例):

root@localhost:cd /voisys/voitools/snapshot

root@localhost:/voisys/voitools/snapshot# ./vbox-img64 convert --srcfilename /vms/idv/data/src.vhd --dstfilename /vms/idv/data/dst.vhd --srcformat VHD --dstformat VHD

然后将压缩后的dst.vhd导出到本地,重新导入到平台即可

注意:

如果二级镜像占用空间很大,可以考虑先将一级镜像和二级镜像合并和再执行上述操作,合并命令如下:

root@localhost:cd /voisys/voitools/snapshot

root@localhost:/voisys/voitools/snapshot# ./vbox-img64 merge --chain /vms/idv/data/first_base.vhd,/vms/idv/data/second_base.vhd --format VHD

警告:

  1. 合并后二级镜像second_base.vhd会被删除,只剩空间占用变大的一级镜像first_base.vhd
  2. 如果二级镜像后还有差分盘(后缀为-diff.vhd),合并一二级镜像后,差分盘将不可用

12,恢复系统配置

如果需要恢复上述功能,可以使用该工具恢复到系统初始状态

即使是卸载了系统应用也可以还原

其他说明:

  1. 我们使用火绒安全对voitools所有源文件(包括voitools.exe)进行了病毒扫描,无风险。

2.在安装有赛门铁克杀毒软件的系统中执行了voitools中每个功能项,无报毒和风险提示

3.对voitools.exe进行了数字签名,防止被系统误认为是恶意软件

三,NSIS脚本源码如下:

# voitools NSIS Install Script
# Author: ebowtang
# Please note that I have resigned some drviers for windows 7, because a bug, Some
# dirvers can not be installed silently, see KB3033929 and KB2921916

Unicode true

!include WinVer.nsh
!include x64.nsh
!include LogicLib.nsh
!include Sections.nsh


# __MUST__ bump version nubmer on very push
!define VERSION 1.1.0.5

LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\SimpChinese.nlf"

LangString FTLicenseText ${LANG_ENGLISH} "Please read and agree the license below"
LangString FTLicenseText ${LANG_SIMPCHINESE} "请务必阅读并同意以下条约"

LicenseLangString FTLicenseData ${LANG_ENGLISH} "license_en.rtf"
LicenseLangString FTLicenseData ${LANG_SIMPCHINESE} "license_cn.rtf"

LangString FTLicenseSubCap ${LANG_ENGLISH} ": danger and instructions"
LangString FTLicenseSubCap ${LANG_SIMPCHINESE} ":风险警告与使用说明"

LangString FTName ${LANG_ENGLISH} "voitools"
LangString FTName ${LANG_SIMPCHINESE} "voitools"

LangString FTLSel1Promot ${LANG_ENGLISH} "select items you want, click OK to start"
LangString FTLSel1Promot ${LANG_SIMPCHINESE} "选择你需要的选项, 点击下一步开始."

LangString FTLSel2Promot ${LANG_ENGLISH} "items:"
LangString FTLSel2Promot ${LANG_SIMPCHINESE} "选项:"

LangString FTInstBtnText ${LANG_ENGLISH} "Start"
LangString FTInstBtnText ${LANG_SIMPCHINESE} "开始吧"

# icon from http://flaticon.com/free-icon/setting_888992
Icon "icon.ico"
Caption $(FTName)
Name $(FTName)
Outfile "voitools.exe"
RequestExecutionLevel admin
ManifestSupportedOS "all"
SpaceTexts "none"

InstallDir "$TEMP\voitools"

VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "voitools"
VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "H3C Learningspace"
VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "H3C Co., Ltd."
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "voitools"
VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" ${VERSION}
VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" ${VERSION}

VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "ProductName" "voitools"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "CompanyName" "H3C Co., Ltd."
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "LegalCopyright" "H3C Learningspace"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "FileDescription" "voi optools"
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "FileVersion" ${VERSION}
VIAddVersionKey /LANG=${LANG_SIMPCHINESE} "ProductVersion" ${VERSION}

BrandingText "教育场景优化小助手"
VIProductVersion ${VERSION}
VIFileVersion ${VERSION}

SubCaption 0 "$(FTLicenseSubCap)"
SubCaption 1 ":请选择功能项"
InstallButtonText $(FTInstBtnText)

PageEx license
  LicenseData $(FTLicenseData)
  LicenseText $(FTLicenseText) ""
PageExEnd

PageEx components
  PageCallbacks  OnBackClearSection "" ""
  ComponentText "$(FTLSel1Promot)" "" "$(FTLSel2Promot)"
PageExEnd

Page instfiles

Section
  LogSet on
SectionEnd

Section /o "1.启/禁用任务管理器" ENABLETASKMGR
  DetailPrint "Enable Windows 10 Task Manager"

  Call DoEnableTaskMgr
SectionEnd

Section /o "2.禁止系统自动更新" DISABLEWIN10UPDATE
  DetailPrint "Disable Windows update"

  Call DoDisableWin10Update
SectionEnd

Section /o "3.优化系统" OPTWIN10
  DetailPrint "Opt Windows"

  Call DoOptwin10
SectionEnd

Section /o "4.精剪系统" DEBLOATE
  DetailPrint "Debloate Windows"

  Call DoDebloate
SectionEnd

Section /o "5.测试网络" NETEST
  DetailPrint "net test"

  Call DoNetTest
SectionEnd

Section /o "6.系统分析" SYSCHECK
  DetailPrint "sys check"

  Call DoSysCheck
SectionEnd

#Section /o "清理系统缓存" CLEARSYS
#  DetailPrint "clear Windows"
#
#  Call DoClearWindows
#SectionEnd


Section /o "7.快速共享本机C盘" HTTPSERVER
  DetailPrint "start Http Server"

  Call DoHttpServer
SectionEnd

Section /o "8.禁用vhd厚存储模式" VHD_EXPAND
  DetailPrint "Disable VhdExpand"

  Call DoDisableVhdExpand
SectionEnd

Section /o "9.解密NextCloud.info" DECRYPTER
  DetailPrint "Decrypter NextCloud.info"

  Call DoDecrypter
SectionEnd


Section /o "10.设置VOI虚拟内存" SETVIRMEM
  DetailPrint "Set Virtual Memory"

  Call DoSetVirtualMemory
SectionEnd

Section /o "11.释放空存储(耗时)" ZEROFILL
  DetailPrint "zerofill free spaces"

  Call DoZerofill
SectionEnd

Section /o "0.恢复系统配置" RESTORE
  DetailPrint "restore default settings"

  Call DoRestore
SectionEnd

Section "-POSTINST" POSTINST
  SetOutPath "$TEMP"
  RMDir /r "$INSTDIR"
SectionEnd


!macro HideSectionMacro SectionId
  SectionSetFlags ${SectionId} ${SF_RO}
  SectionSetText ${SectionId} "Disable In Win7"
!macroend

!define HideSection '!insertMacro HideSectionMacro'

Function .onInit
  #${IfNot} ${IsWin10}
  ${If} ${IsWin7}
	${HideSection} ${DISABLEWIN10UPDATE}
	${HideSection} ${OPTWIN10}
    ${HideSection} ${DEBLOATE}
  ${EndIf}
FunctionEnd

Function OnBackClearSection
 # !insertmacro UnselectSection ${DISABLE_UPDATE}
FunctionEnd

Function DoDisableVhdExpand
  DetailPrint "禁用厚存储模式"

  SetOutPath "C:\VoiTools\"
  File /r "VhdExpand"
  ExecWait 'regedit /s "C:\VoiTools\VhdExpand\Disable Auto Expand.reg"'
  #ExecWait 'regedit /s "$INSTDIR\VhdExpand\Enable Auto Expand.reg"'
FunctionEnd


Function DoOptwin10
  SetOutPath "C:\VoiTools\"
  DetailPrint "优化系统"
  File /r "Windows10Debloater"
  nsExec::ExecToLog '"C:\VoiTools\Windows10Debloater\win10opt.cmd"'
  
  DetailPrint "清理系统缓存"
  File /r "ClearSys"
  nsExec::ExecToLog '"C:\VoiTools\ClearSys\clearsys.bat"'
FunctionEnd


Function DoDebloate
  DetailPrint "精简系统"

  SetOutPath "C:\VoiTools\"
  File /r "Windows10Debloater"
  nsExec::ExecToLog '"C:\VoiTools\Windows10Debloater\win10debloat.cmd"'
FunctionEnd


Function DoEnableTaskMgr
  DetailPrint "启/禁用任务管理器"
  #SetOutPath "$INSTDIR"
  #File /r "Windows10Debloater"
  #nsExec::ExecToLog '"$INSTDIR\Windows10Debloater\EnableTaskMgr.cmd"'
  SetOutPath "C:\VoiTools\"
  File /r "Windows10Debloater"
  ${If} ${IsWin10}
      nsExec::ExecToLog '"C:\VoiTools\Windows10Debloater\EnableTaskMgr.cmd"'
  ${ElseIf} ${IsWin7}
      ExecShell open '"C:\VoiTools\Windows10Debloater\EnableTaskMgr.cmd"'
  ${Else}
      nsExec::ExecToLog '"C:\VoiTools\Windows10Debloater\EnableTaskMgr.cmd"'
  ${EndIf}
FunctionEnd


Function DoDecrypter
  DetailPrint "解密NextCloud.info"
  SetOutPath "C:\VoiTools\"
  File /r "Decrypter"
  nsExec::ExecToLog "C:\VoiTools\Decrypter\decrypter.exe $EXEDIR\NextCloud.info"
FunctionEnd

Function DoZerofill
  DetailPrint "释放空存储"

  SetOutPath "C:\VoiTools\"
  File /r "Sdelete"
  ${If} ${RunningX64}
    nsExec::ExecToLog '"C:\VoiTools\Sdelete\sdelete64.exe" -accepteula -z c:'
  ${Else}
    nsExec::ExecToLog '"C:\VoiTools\Sdelete\sdelete.exe" -accepteula -z c:'
  ${EndIf} 
FunctionEnd


Function DoDisableWin10Update
  DetailPrint "禁用win10/winserver系统更新"
  SetOutPath "C:\VoiTools\"
  File /r "Windows10Debloater"
  nsExec::ExecToLog '"C:\VoiTools\Windows10Debloater\DisableWindowsUpdate.cmd"'
FunctionEnd


Function DoNetTest
  DetailPrint "检测网络"
  #${If} ${RunningX64}
  SetOutPath "C:\VoiTools\NetTest"
  File /r "NetTest\"
  ExecShell open "C:\VoiTools\NetTest\psping_start.bat"
  #${Else}
  #${EndIf} 
FunctionEnd

Function DoSetVirtualMemory
  DetailPrint "设置虚拟内存"
  SetOutPath "C:\VoiTools\"
  File /r "Windows10Debloater"
  ${If} ${IsWin10}
      nsExec::ExecToLog '"C:\VoiTools\Windows10Debloater\SetVirtualMemory.cmd"'
  ${ElseIf} ${IsWin7}
      ExecShell open '"C:\VoiTools\Windows10Debloater\SetVirtualMemory.cmd"'
  ${Else}
      nsExec::ExecToLog '"C:\VoiTools\Windows10Debloater\SetVirtualMemory.cmd"'
  ${EndIf}
FunctionEnd

Function DoSysCheck
  DetailPrint "系统分析"
  SetOutPath "C:\VoiTools\PSTools"
  File /r "PSTools\"
  ExecShell open "C:\VoiTools\PSTools\pstools_start.bat"
FunctionEnd

Function DoHttpServer
  DetailPrint "即将使用hfs工具搭建Http File Server(可能需要等待10秒钟)"
  DetailPrint "执行成功后需要先关闭hfs.exe进程,voitools才能结束运行"
  DetailPrint "如何结束Http File Server?下面有三种方法"
  DetailPrint "   A)通过右击右下角HFS程序图标退出"
  DetailPrint "   B)任务管理器结束hfs.exe进程"
  DetailPrint "   C)重启本机系统"

  SetOutPath "C:\VoiTools\HttpServer"
  File /r "HttpServer\"
  #ExecShell open "C:\VoiTools\HttpServer\hfs_start.bat"
  #ExecShell open 'C:\VoiTools\HttpServer\hfs.exe "C:\"'
  nsExec::ExecToLog '"C:\VoiTools\HttpServer\hfs.exe" -accepteula -z C:'
FunctionEnd

Function DoRestore
  DetailPrint "恢复系统配置"

  SetOutPath "C:\VoiTools\Windows10Debloater"
  File /r "Windows10Debloater\"
  ExecShell open "C:\VoiTools\Windows10Debloater\restore.bat"
FunctionEnd

四,编译方法

再有了nsis的脚本源码,及其工作目录后(如下图,文件夹里的工具和脚本均是各项功能的实现)

1. 先安装 nsis\nsis-3.06.1-setup.exe(开篇提及的源码中有相应安装包,下载后可搜索)
2. 解压 nsis\nsis-3.06.1-log.zip , 将解压后的文件复制到以下目录覆盖替换
   64位: C:\Program Files (x86)\NSIS
   32位: C:\Program Files\NSIS
3. 进入voitool目录, 鼠标右键voitool.nsi 选择 "Compile NSIS Script"

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NSIS(Nullsoft Scriptable Install System)是一个开源的安装程序制作工具,它可以创建Windows平台下的安装程序。NSIS提供了一个简单而强大的脚本语言,使得开发者可以创建定制化的安装程序。 以下是一个使用NSIS写的美化安装脚本的示例: 1. 首先,我们需要创建一个NSIS脚本文件,比如“installer.nsi”。 2. 在脚本文件中,我们需要定义需要安装的文件和目录。比如: ``` ; 定义需要安装的文件和目录 SetOutPath "$INSTDIR" File /r "path/to/files/*.*" ``` 3. 接下来,我们可以自定义安装界面。NSIS提供了多种界面模板,我们可以选择其中一种或自己编写。比如: ``` !include "MUI2.nsh" ; 自定义安装界面 !define MUI_HEADERIMAGE !define MUI_WELCOMEFINISHPAGE_BITMAP "path/to/image.bmp" !define MUI_LICENSEPAGE_BITMAP "path/to/image.bmp" !define MUI_CUSTOMFUNCTION_GUIINIT myGUIInit !define MUI_CUSTOMFUNCTION_LEAVE myLeave Function myGUIInit ; 设置安装界面的背景色和字体 FunctionEnd Function myLeave ; 安装完成后的处理 FunctionEnd ; 定义安装界面元素 !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "path/to/license.txt" !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH ``` 4. 最后,我们需要编译NSIS脚本文件并生成安装程序。在命令行中执行以下命令即可: ``` makensis.exe installer.nsi ``` 上述示例演示了如何在NSIS中创建美化的安装脚本。你可以根据需要自定义界面和安装过程中的行为。同时,NSIS还提供了很多其他功能,比如创建桌面快捷方式、添加注册表项等,可根据自己的需求进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值