手机网站分享js代码,网站优点缺点,如何推广自己的公司,东莞营销型网站建设流程引言
NSIS (Nullsoft Scriptable Install System) 是一个专业开源的制作 windows 安装程序的工具。我们通过HM NSIEDIT编写好脚本、编译即可生成exe安装包。安装过程中可以配置其安装包图标、名称、出版人、网站等。此外#xff0c;还可以设置程序开机自启动、管理员权限运行…引言
NSIS (Nullsoft Scriptable Install System) 是一个专业开源的制作 windows 安装程序的工具。我们通过HM NSIEDIT编写好脚本、编译即可生成exe安装包。安装过程中可以配置其安装包图标、名称、出版人、网站等。此外还可以设置程序开机自启动、管理员权限运行等给基于注册表的操作也可以运行批处理文件bat文件进行系统模块的安装。
1、所需工具
1NSIS 下载地址 NSIS: Nullsoft Scriptable Install System download | SourceForge.net 2HM 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 MetalBurrKeyMessageBox MB_ICONINFORMATION|MB_OK $(^Name) 已成功地从你的计算机移除。
FunctionEnd 2.2、打包文件匹配
利用脚本向导会帮助我们快速构建打包程序但是文件罗列的太过详细有事我们只需要打包Debug文件夹中 dll 和 exe 文件即可而且后续可能会增加或修改类库和运行程序的名称此时用文件名匹配更为合适。
SetOutPath $INSTDIRSetOverwrite ifnewerFile software\bin\Debug\*.dllFile software\bin\Debug\*.exe
如果你想包含子目录及其所有指定格式文件如下
SetOutPath $INSTDIRSetOverwrite ifnewerFile -r software\bin\Debug\*.dllFile -r software\bin\Debug\*.exe 删除文件也有类似的方法
RMDir /r $INSTDIR\net48
RMDir /r $INSTDIR
2.3、注册表操作、管理员启动
在Post阶段向导会为我们自动生成程序相关键值我们也可以根据需要插入额外键值 如需要管理员启动
Section -PostWriteUninstaller $INSTDIR\uninst.exeWriteRegStr HKLM ${PRODUCT_DIR_REGKEY} $INSTDIR\net48\MetalBurrDetectionSys.exeWriteRegStr ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} DisplayName $(^Name)WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} UninstallString $INSTDIR\uninst.exeWriteRegStr ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} DisplayIcon $INSTDIR\net48\MetalBurrDetectionSys.exeWriteRegStr ${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_GROUPCreateShortCut $SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk $INSTDIR\net48\MetalBurrDetectionSys.exeCreateShortCut $DESKTOP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk $INSTDIR\net48\MetalBurrDetectionSys.exeCreateShortCut $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.batSetOutPath D:\HelpFile\某某软件\distFile /r ..\EditorRunHelpFile\BatteryHelpFile\docs\.vuepress\dist\*.*nsExec::Exec $INSTDIR/iis.bat
SectionEnd;打包主程序文件
Section MainSection SEC02;停止进程nsExec::Exec taskkill /im MetalBurrDetectionSys.exe /fSetOutPath $INSTDIR\SystemConfigSetOverwrite ifnewerFile /r 某某软件\bin\Debug\SystemConfig\*.jsonSetOutPath $INSTDIRSetOverwrite ifnewerFile 某某软件\bin\Debug\*.*SetOutPath $INSTDIR\net48SetOverwrite ifnewerFile /r 某某软件\bin\Debug\net48\*.dllFile /r 某某软件\bin\Debug\net48\*.jsonFile /r 某某软件\bin\Debug\net48\*.configFile /r 某某软件\bin\Debug\net48\*.WHFile /r 某某软件\bin\Debug\net48\*.pngFile A:\目录\*.dllFile /r 某某软件\bin\Debug\net48\*.exeSectionEndSection -PostWriteUninstaller $INSTDIR\uninst.exeWriteRegStr HKLM ${PRODUCT_DIR_REGKEY} $INSTDIR\net48\MetalBurrDetectionSys.exeWriteRegStr ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} DisplayName $(^Name)WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} UninstallString $INSTDIR\uninst.exeWriteRegStr ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} DisplayIcon $INSTDIR\net48\MetalBurrDetectionSys.exeWriteRegStr ${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_GROUPCreateShortCut $SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk $INSTDIR\net48\MetalBurrDetectionSys.exeCreateShortCut $DESKTOP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnk $INSTDIR\net48\MetalBurrDetectionSys.exeCreateShortCut $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.batDelete $INSTDIR\uninst.exeDelete $SMPROGRAMS\$ICONS_GROUP\Uninstall.lnkDelete $DESKTOP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnkDelete $SMPROGRAMS\$ICONS_GROUP\${PRODUCT_NAME} ${PRODUCT_VERSION}.lnkRMDir $SMPROGRAMS\$ICONS_GROUPRMDir /r D:\HelpFile\某某软件\distRMDir /r $INSTDIR\SystemConfigRMDir /r $INSTDIR\net48RMDir /r $INSTDIRDeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY}DeleteRegKey HKLM ${PRODUCT_DIR_REGKEY}DeleteRegValue HKCU Software\Microsoft\Windows\CurrentVersion\Run MetalBurrKeySetAutoClose true
SectionEnd;函数放在最后
Function AutoBootWriteRegStr HKCU Software\Microsoft\Windows\CurrentVersion\Run MetalBurrKey $INSTDIR\net48\MetalBurrDetectionSys.exe
FunctionEndFunction un.onUninstSuccessHideWindowDeleteRegValue HKCU Software\Microsoft\Windows\CurrentVersion\Run MetalBurrKeyMessageBox MB_ICONINFORMATION|MB_OK $(^Name) 已成功地从你的计算机移除。
FunctionEndFunction un.onInitMessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 你确实要完全移除 $(^Name) 其及所有的组件 IDYES 2Abort
FunctionEnd
3、脚本
自动安装IIS服务
echo off
cd /d %~dp0echo 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_NAMEWH_MetalBurr:: 使用appcmd.exe删除网站
%windir%\system32\inetsrv\appcmd delete site %SITE_NAME%endlocal
echo Done.