【WinForm】使用NSIS发布程序

时间:2022-09-30 17:28:31

简介

  NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能

使用

  以下是我在网上看到的一篇还是比较详细的说明,特别摘出来,改了一下排版,方便查看。

  源地址在这  点击查看 ,还是非常感谢高山流水 的!

1. 用向导自动生成NSIS脚本文件。 打开VNISEdit.

  【WinForm】使用NSIS发布程序

单击向导后,在弹出窗口,点<下一步>,出现设置窗口1/8如下。

  【WinForm】使用NSIS发布程序

2.填写完毕按<下一步>,出现设置窗口2/8如下

  【WinForm】使用NSIS发布程序

3.填写完毕按<下一步>,出现设置窗口3,在此我们不设置任何选项,直接按<下一步>,出现设置窗口4/8。

  【WinForm】使用NSIS发布程序

4.填写完毕按<下一步>,出现设置窗口5/8,按图设置安装文件,在此我们设置文件的安装文件夹。

  【WinForm】使用NSIS发布程序

注意cvirte目录及其下的文件和文件夹要安装到system32下,设置窗口如下:

  【WinForm】使用NSIS发布程序

5.点设置窗口5/8的<下一步>,出现设置窗口6/8。

  【WinForm】使用NSIS发布程序

6.按图设定后点<下一步>,出现设置窗口7/8。

  【WinForm】使用NSIS发布程序

7.点击上图<下一步>,出现设置窗口8/8,此窗口可不用设置,直接点<下一步>出现下图。

  【WinForm】使用NSIS发布程序

8.至此NSIS脚本文件自动生成,接下来就是编译NSIS脚本。

  【WinForm】使用NSIS发布程序

9. 最后看一下生成的目录结构如下:

  【WinForm】使用NSIS发布程序

下载

               【WinForm】使用NSIS发布程序  NSIS安装包下载

总结

  使用NSIS发布程序,上手比较简单,功能强大,安装速度快。网上搜了些NSIS的资料,找到了一个学习NSIS打包的一个比较好的博客(地址:轻狂志),也学习到了一些东西。

源码

  这是一个NSIS的一个源码,很有借鉴意义,源地址在此(黑色街角)。软件的打包源码,包含mysql数据打包安装。

; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

; 安装程序初始定义常量
!define PRODUCT_NAME "XX广告制作软件"
!define PRODUCT_VERSION "2.2"
!define PRODUCT_PUBLISHER "XX.com, Inc."
!define PRODUCT_WEB_SITE "http://www.1bsoft.com"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\YBest.Ads.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM" SetCompressor lzma ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
!include "WordFunc.nsh" ; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON "ybkj.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 许可协议页面
!insertmacro MUI_PAGE_LICENSE "Readme.txt"
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!define MUI_FINISHPAGE_RUN "$INSTDIR\YBest.Ads.exe"
!insertmacro MUI_PAGE_FINISH ; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES ; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
;文件版本声明
VIProductVersion "2.2.0.0"
VIAddVersionKey /LANG= "ProductName" "XX广告制作软件"
VIAddVersionKey /LANG= "Comments" "软件版权归XX软件所有,他人不得复制或二次开发本程序。"
VIAddVersionKey /LANG= "CompanyName" "www.XX.com"
VIAddVersionKey /LANG= "LegalTrademarks" "XX软件"
VIAddVersionKey /LANG= "LegalCopyright" "XX.com"
VIAddVersionKey /LANG= "FileDescription" "XX广告制作软件安装程序"
VIAddVersionKey /LANG= "FileVersion" "2.2.0.0" ; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "YBSetup.exe"
InstallDir "$PROGRAMFILES\XX广告制作软件"
InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString"
ShowInstDetails show
ShowUnInstDetails show
BrandingText "XX软件 www.XX.com"
DirText "安装向导将把 $(^NameDA) 安装在下列文件夹,如果要安装到其他文件夹请单击 [浏览(B)] 进行选择。" Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
CreateDirectory "$SMPROGRAMS\XX广告制作软件"
CreateShortCut "$SMPROGRAMS\XX广告制作软件\XX广告制作软件.lnk" "$INSTDIR\YBest.Ads.exe"
CreateShortCut "$DESKTOP\XX广告制作软件.lnk" "$INSTDIR\YBest.Ads.exe"
File "DevComponents.DotNetBar2.dll"
File "DevComponents.DotNetBar2.xml"
File "LitJSON.dll"
File "MySql.Data.dll"
File "NPOI.dll"
File "ybkj.ico"
File "YBest.Ads.exe"
File "YBest.Ads.exe.config"
File "YBest.BLL.dll"
File "YBest.Common.dll"
File "YBest.DAL.dll"
File "YBest.DBUtility.dll"
File "YBest.Model.dll"
File "Readme.txt"
File "MqttLib.dll"
File "PullService.dll"
SetOutPath "$INSTDIR\XmlConfig"
SetOverwrite ifnewer
File /r "XmlConfig\*"
SetOutPath "$INSTDIR\images"
SetOverwrite ifnewer
File /r "images\*"
SetOutPath "$INSTDIR\mysql5.1"
SetOverwrite ifnewer
File /r "mysql5.1\*"
;安装mysql服务
call installMysql
SectionEnd Section -AdditionalIcons
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\XX广告制作软件\XX软件官网.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\XX广告制作软件\卸载${PRODUCT_NAME}.lnk" "$INSTDIR\uninst.exe"
SectionEnd Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\AdsBow.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\AdsBow.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
WriteRegDword HKLM "${PRODUCT_DIR_REGKEY}" "Installed"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "InstalledPath" "$INSTDIR"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "version" "${PRODUCT_VERSION}" ;写入版本号
SectionEnd Section -.NET
Call GetNetFrameworkVersion
Pop $R1
${If} $R1 < '2.0.50727'
SetDetailsPrint textonly
DetailPrint "正在安装 .NET Framework 2.0,这个可能需要几分钟,请耐心等待..."
SetDetailsPrint listonly
SetOutPath "$TEMP"
SetOverwrite on
File "NetFx20SP2_x86.exe"
ExecWait '$TEMP\NetFx20SP2_x86.exe /quiet /norestart' $R1
Delete "$TEMP\NetFx20SP2_x86.exe"
${EndIf}
SectionEnd /******************************
* 以下是安装程序的卸载部分 *
******************************/ Section Uninstall
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\YBest.Ads.exe"
Delete "$INSTDIR\YBest.Ads.exe.config"
Delete "$INSTDIR\YBest.BLL.dll"
Delete "$INSTDIR\YBest.Common.dll"
Delete "$INSTDIR\YBest.DAL.dll"
Delete "$INSTDIR\YBest.DBUtility.dll"
Delete "$INSTDIR\YBest.Model.dll"
Delete "$INSTDIR\DevComponents.DotNetBar2.dll"
Delete "$INSTDIR\DevComponents.DotNetBar2.xml"
Delete "$INSTDIR\LitJSON.dll"
Delete "$INSTDIR\MySql.Data.dll"
Delete "$INSTDIR\NPOI.dll"
Delete "$INSTDIR\ybkj.ico"
Delete "$INSTDIR\Readme.txt"
Delete "$INSTDIR\MqttLib.dll"
Delete "$INSTDIR\PullService.dll"
;停止mysql服务 并移除服务
call un.removeService
; 循环删除文件直至删除文件夹
RMDir /r "$INSTDIR\images"
RMDir /r "$INSTDIR\XmlConfig"
RMDir /r "$INSTDIR\mysql5.1" Delete "$SMPROGRAMS\XX广告制作软件\卸载${PRODUCT_NAME}.lnk"
Delete "$SMPROGRAMS\XX广告制作软件\XX软件官网.lnk"
Delete "$DESKTOP\XX广告制作软件.lnk"
Delete "$SMPROGRAMS\XX广告制作软件\XX广告制作软件.lnk" RMDir "$SMPROGRAMS\XX广告制作软件"
RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--# Function GetNetFrameworkVersion
;获取.Net Framework版本,支持
Push $
Push $
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Install"
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Version"
StrCmp $ KnowNetFrameworkVersion +
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "InstallSuccess"
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "Version"
StrCmp $ KnowNetFrameworkVersion +
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install"
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Version"
StrCmp $ "" + +
StrCpy $ "2.0.50727.832"
StrCmp $ KnowNetFrameworkVersion +
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Install"
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Version"
StrCmp $ "" + +
StrCpy $ "1.1.4322.573"
StrCmp $ KnowNetFrameworkVersion +
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Install"
ReadRegDWORD $ HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Version"
StrCmp $ "" + +
StrCpy $ "1.0.3705.0"
StrCmp $ KnowNetFrameworkVersion +
StrCpy $ "not .NetFramework"
KnowNetFrameworkVersion:
Pop $
Exch $
FunctionEnd ;安装mysql服务
Function installMysql
Push "mysqld.exe"
ProcessWork::existsprocess
Pop $R0
IntCmp $R0 no_install ;判断mysql是否已经安装
;写入注册表表示不是本程序安装的mysql,卸载的时候不需要卸载mysql数据库
WriteRegDword HKLM "${PRODUCT_DIR_REGKEY}" "MySqlInstalled"
MessageBox MB_OK|MB_ICONEXCLAMATION "本机已安装了mysql数据库,请手动导入数据信息,谢谢!"
Goto done ;退出安装mysql
no_install: ;没有安装则安装
ExecWait "$INSTDIR\mysql5.1\bin\mysqld --install mysql"
;设置mysql的环境变量到PATH路径
ReadRegStr $ HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$0;$INSTDIR\mysql5.1\bin\"
;刷新环境变量
SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} "STR:Environment"
;启动服务
ExecWait "net start mysql"
;写入注册表表示是本程序安装的mysql,方便卸载的时候卸载mysql数据库
WriteRegDword HKLM "${PRODUCT_DIR_REGKEY}" "MySqlInstalled"
;完成
done:
FunctionEnd Function .onInit
InitPluginsDir
;创建互斥防止重复运行
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "YBSetup") i .r1 ?e'
Pop $R0
StrCmp $R0 +
MessageBox MB_OK|MB_ICONEXCLAMATION "有一个YBSetup安装向导已经运行!"
Abort
;禁止多次安装实例 start
ReadRegDWORD $ HKLM '${PRODUCT_DIR_REGKEY}' "Installed"
IntCmp $ + +
MessageBox MB_OK|MB_USERICON '$(^Name) 已安装在计算机中。如需重新安装,请卸载已有的安装。'
Quit
nop
;禁止多次安装实例 end
FunctionEnd ;--------------- 移除mysql服务 ----------------
Function un.removeService
;读取是否是本程序安装mysql
ReadRegDWORD $ HKLM '${PRODUCT_DIR_REGKEY}' "MySqlInstalled"
IntCmp $ clearDb
;停止mysql服务
ExecWait "net stop Mysql"
;移除mysql服务
ExecWait "$INSTDIR\mysql5.1\bin\mysqld --remove Mysql"
;移除环境变量
ReadRegStr $R0 HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path"
${WordReplace} $R0 ";$INSTDIR\mysql5.1\bin\" "" "+" $R1
;MessageBox MB_OK|MB_USERICON '$R0 - $INSTDIR - $R1 '
WriteRegExpandStr HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" "Path" "$R1"
;清除数据库信息
clearDb: FunctionEnd
;---------------------------------
Function un.onInit
FindProcDLL::FindProc "YBest.Ads.exe"
Pop $R0
IntCmp $R0 no_run
MessageBox MB_ICONSTOP "安装程序检测到 $(^Name) 正在运行,请退出程序后重试"
Quit
no_run:
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +
Abort
FunctionEnd Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
FunctionEnd

   NSIS软件更新包打包代码(要是针对NSIS打包升级程序安装包,平常软件的更新主要是程序文件的替换和数据库的更新)

; 安装程序初始定义常量
!define PRODUCT_NAME "XX广告制作管理软件"
!define PRODUCT_VERSION "2.2"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\YBest.Ads.exe" SetCompressor lzma ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include "MUI.nsh"
!include "WordFunc.nsh" ; MUI 预定义常量
!define MUI_ICON "ybkj.ico" ; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 许可协议页面
!insertmacro MUI_PAGE_LICENSE "Readme.txt"
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE "SimpChinese"
;文件版本声明
VIProductVersion "2.2.0.0"
VIAddVersionKey /LANG= "ProductName" "${PRODUCT_NAME}"
VIAddVersionKey /LANG= "Comments" "软件版权归XX软件所有,他人不得复制或二次开发本程序。"
VIAddVersionKey /LANG= "CompanyName" "www.XX.com"
VIAddVersionKey /LANG= "LegalTrademarks" "XX软件"
VIAddVersionKey /LANG= "LegalCopyright" "XX.com"
VIAddVersionKey /LANG= "FileDescription" "XX广告制作软件-V${PRODUCT_VERSION}升级程序"
VIAddVersionKey /LANG= "FileVersion" "${PRODUCT_VERSION}" ; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------ Name "${PRODUCT_NAME} - V${PRODUCT_VERSION}升级程序"
OutFile "${PRODUCT_NAME}-V${PRODUCT_VERSION}升级包.exe"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails hide
BrandingText "XX软件 www.XX.com" ; ------ 更新软件 ------
Section "UpdateSoft" SEC01
;休眠1秒钟 展示安装效果
Sleep
SetDetailsPrint textonly
DetailPrint "正在升级 ${PRODUCT_NAME},请单击[关闭]按钮完成升级!"
SetDetailsPrint listonly SectionIn RO
SetOutPath "$INSTDIR"
;更新比原目录日期新的文件
SetOverwrite ifnewer
;升级文件
File "YBest.Ads.exe"
File "YBest.Ads.exe.config"
File "YBest.BLL.dll"
File "YBest.Common.dll"
File "YBest.DAL.dll"
File "YBest.DBUtility.dll"
File "YBest.Model.dll"
File "MqttLib.dll"
File "PullService.dll"
File "更新说明.txt"
File "update.sql"
;更新数据库
Call updateDB
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "version" "${PRODUCT_VERSION}" ;写入版本号
;指定以记事本打开说明
;Exec '"$SYSDIR\notepad.exe" "$INSTDIR\更新说明.txt"'
SectionEnd
; ------ 更新软件结束 ------ ;更新数据库
Function updateDB
;检查mysql服务是否启动
Push "mysqld.exe"
ProcessWork::existsprocess
Pop $R0
IntCmp $R0 ExecSql
MessageBox MB_OK|MB_ICONEXCLAMATION "mysql数据库服务未启动,请启动后再升级程序!"
Quit ;未启动则 退出更新安装程序
ExecSql:
;更新数据
ExecWait 'mysql --user=root --password=123456 --execute="source $INSTDIR\update.sql"' $
StrCmp $ endinst
MessageBox MB_OK|MB_ICONEXCLAMATION "数据库更新失败!请确认账号密码是否正确或数据库已安装!"
Delete "$INSTDIR\update.sql" ;删除文件
Quit ;未启动则 退出更新安装程序
endinst:
Delete "$INSTDIR\update.sql" ;删除文件
FunctionEnd Function .onInit
;判断是否已安装
ReadRegStr $ HKLM "${PRODUCT_DIR_REGKEY}" ""
StrCmp $ "" NoAbort
MessageBox MB_OK|MB_ICONEXCLAMATION "您未正确安装${PRODUCT_NAME},不能使用此升级程序!"
Abort ;退出安装程序
NoAbort: ;程序正在运行则关闭程序
Push $R0
CheckProc:
Push "YBest.Ads.exe"
ProcessWork::existsprocess
Pop $R0
IntCmp $R0 Done
MessageBox MB_OKCANCEL|MB_ICONSTOP "升级程序检测到 ${PRODUCT_NAME} 正在运行。$\r$\n$\r$\n点击 “确定” 强制关闭${PRODUCT_NAME},继续升级。$\r$\n点击 “取消” 退出安装程序。" IDCANCEL Exit
Push "YBest.Ads.exe"
Processwork::KillProcess
Sleep
Goto CheckProc
Exit:
Abort
Done:
Pop $R0
FunctionEnd

【WinForm】使用NSIS发布程序的更多相关文章

  1. SNF开发平台WinForm之八-自动升级程序部署使用说明-SNF快速开发平台3&period;3-Spring&period;Net&period;Framework

    9.1运行效果: 9.2开发实现: 1.首先配置服务器端,把“SNFAutoUpdate2.0\服务器端部署“目录按网站程序进行发布到IIS服务器上. 2.粘贴语句,生成程序 需要调用的应用程序的Lo ...

  2. 【Winform】Winform 制作一键发布web

    前言 最近web网站有个需要,就是打包给客户,客户能够自己手动的进行傻瓜式的安装发布web.找了很多资料,其中涉及到 文件解压 IIS操作 数据库还原 等. 发现现在就主要是两种解决方案: ①:使用V ...

  3. WinForm中ClickOnce发布至广域网

    ClickOnce智能客户端,是微软提供比较早的一项技术,用于实现WinForm开发的应用程序能够自动更新,省去给每台客户端升级带来的困扰. 从网上的贴子里看,有的说好用,有的说不好用.客观的说,微软 ...

  4. Qt for Mac:发布程序(widgets和quick2)

    当你用Qt开发好程序后,是不是会很期待将你的成果分享给你的小伙伴 可是Qt的库并不是OS X标配的,所以我们要自己去复制库到app包里,才可以让app在其他未安装Qt的电脑上运行. 比较幸运的是,Qt ...

  5. WPF发布程序后未授予信任的解决办法

    WPF发布程序后未授予信任的解决办法 基于浏览器的WPF应用程序由于需要比较高的操作权限,所以在项目的安全性属性中选择了“这是完全可信的应用程序”选项.可是,在发布部署后,在其他电脑上打开xbap文件 ...

  6. 如何使用VC&plus;&plus;6&period;0发布程序(即release版本程序)

    大家都知道VC编译器默认生成debug版本的程序,但是debug版本程序无法运行在没有安装VC的电脑上, 这就要就我们生成release版本的程序,因为release版本在未安装VC的电脑上也能运行( ...

  7. VS2008发布程序

    下列附有VS2008发布程序介绍:vc2008程序发布指南2008-05-03 17:46vc2008开发的程序的发布方式可以有5种方式: 1. 采用静态链接到crt和MFC. 只要你拥有组成程序的所 ...

  8. WinForm之窗体应用程序

    WinForm之窗体应用程序 基本简单数据库操作(增删改查) using System; using System.Collections.Generic; using System.Windows. ...

  9. C&plus;&plus; Word Count 发布程序

    前段时间,模仿 Linux 系统下的 wc 程序,在 Windows 系统环境下使用 C/C++ 实现了一个相似的 WC 程序,只不过有针对性,针对的是 C/C++,Java 等风格的源代码文件. 此 ...

随机推荐

  1. PHP 语言特性

    一.PHP 超级全局变量 PHP 超级全局变量列表: $GLOBALS $_SERVER $_REQUEST $_POST $_GET $_FILES $_ENV $_COOKIE $_SESSION ...

  2. EF 延迟加载和预先加载

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨延迟加载和预先加载 Entity Frame ...

  3. SpreadJS电子表格

    SpreadJS是wijmo旗下的一款HTML5电子表格控件. 官方网址:http://wijmo.com/products/spreadjs/ 在这里简单整理了SpreadJS几个比较简单的特点,如 ...

  4. 区间更新 zoj3911

    哎,没什么坑点,一个简单的区间更新题,但是改了好几天没改对,最终还是过了~~发个纪念下 泪奔... #include<cstdio>#include <iostream>#in ...

  5. MEF&lpar;Managed Extensibility Framework &rpar;的入门介绍

    1.什么是MEF MEF是一个来自于微软协作构建扩展应用的新框架,它的目的是在运行中的应用中添加插件.MEF继承于.NET 4.0 Framework平台,存在于各种应用平台的系统程序集中 2.程序集 ...

  6. 【转】奇异值分解(We Recommend a Singular Value Decomposition)

    文章转自:奇异值分解(We Recommend a Singular Value Decomposition) 文章写的浅显易懂,很有意思.但是没找到转载方式,所以复制了过来.一个是备忘,一个是分享给 ...

  7. And【sql语句之为何用and一个字段两个值得不到表中的数据】

    一.[一个表的一个字段的多个条件用and连接] 用and是查不到值的, and是多个条件同时成立, 也就是一个字段是不能同时等于两个值的. '; 二[相同两个表的两个相同字段的查询用and连接] '; ...

  8. RSA算法加解密

    package org.thcic.ejw.util.encrypt; import java.io.ByteArrayOutputStream; import java.security.Key; ...

  9. TreeSet的两种排序方式&comma;含Comparable、Comparator

    1.排序的引入 由于TreeSet可以实现对元素按照某种规则进行排序,例如下面的例子 public class TreeSetDemo { public static void main(String ...

  10. 在vue-cli中引用公共过滤器filter

    在实际项目开发中,在某一组件中声明的全局过滤器Vue.filter并不能在其他组件中使用,所以,我认为只要调用两次以上或者可能会被调用两次以上的过滤器,就应该写入统一个过滤器文件中,方便统一调用.下面 ...