开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【WinForm】使用NSIS发布程序

简介: 原文:【WinForm】使用NSIS发布程序 简介   NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装、卸载、系统设置、文件解压缩等功能 使用   以下是我在网上看到的一篇还是比较详细的说明,特别摘出来,改了一下排版,方便查看。
+关注继续查看

原文:【WinForm】使用NSIS发布程序

简介

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

使用

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

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

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

 

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

  

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

  

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

  

下载

                 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=2052 "ProductName" "XX广告制作软件"
VIAddVersionKey /LANG=2052 "Comments" "软件版权归XX软件所有,他人不得复制或二次开发本程序。"
VIAddVersionKey /LANG=2052 "CompanyName" "www.XX.com"
VIAddVersionKey /LANG=2052 "LegalTrademarks" "XX软件"
VIAddVersionKey /LANG=2052 "LegalCopyright" "XX.com"
VIAddVersionKey /LANG=2052 "FileDescription" "XX广告制作软件安装程序"
VIAddVersionKey /LANG=2052 "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" 1
  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 $1
Push $0
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" "Version"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "InstallSuccess"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "Version"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Version"
StrCmp $1 "" +1 +2
StrCpy $1 "2.0.50727.832"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Version"
StrCmp $1 "" +1 +2
StrCpy $1 "1.1.4322.573"
StrCmp $0 1 KnowNetFrameworkVersion +1
ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Install"
ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0" "Version"
StrCmp $1 "" +1 +2
StrCpy $1 "1.0.3705.0"
StrCmp $0 1 KnowNetFrameworkVersion +1
StrCpy $1 "not .NetFramework"
KnowNetFrameworkVersion:
Pop $0
Exch $1
FunctionEnd

;安装mysql服务
Function installMysql
  Push "mysqld.exe"
        ProcessWork::existsprocess
        Pop $R0
        IntCmp $R0 0 no_install ;判断mysql是否已经安装
        ;写入注册表表示不是本程序安装的mysql,卸载的时候不需要卸载mysql数据库
            WriteRegDword HKLM "${PRODUCT_DIR_REGKEY}" "MySqlInstalled" 0
            MessageBox MB_OK|MB_ICONEXCLAMATION "本机已安装了mysql数据库,请手动导入数据信息,谢谢!"
        Goto done ;退出安装mysql
        no_install: ;没有安装则安装
            ExecWait "$INSTDIR\mysql5.1\bin\mysqld --install mysql"
            ;设置mysql的环境变量到PATH路径
            ReadRegStr $0 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} 0 "STR:Environment"
            ;启动服务
            ExecWait "net start mysql"
            ;写入注册表表示是本程序安装的mysql,方便卸载的时候卸载mysql数据库
            WriteRegDword HKLM "${PRODUCT_DIR_REGKEY}" "MySqlInstalled" 1
            ;完成
            done:
FunctionEnd

Function .onInit
InitPluginsDir
  ;创建互斥防止重复运行
  System::Call 'kernel32::CreateMutexA(i 0, i 0, t "YBSetup") i .r1 ?e'
  Pop $R0
  StrCmp $R0 0 +3
    MessageBox MB_OK|MB_ICONEXCLAMATION "有一个YBSetup安装向导已经运行!"
  Abort
;禁止多次安装实例 start
ReadRegDWORD $0 HKLM '${PRODUCT_DIR_REGKEY}' "Installed"
IntCmp $0 +1 +4
MessageBox MB_OK|MB_USERICON '$(^Name) 已安装在计算机中。如需重新安装,请卸载已有的安装。'
Quit
nop
;禁止多次安装实例 end
FunctionEnd

;--------------- 移除mysql服务 ----------------
Function un.removeService
;读取是否是本程序安装mysql
ReadRegDWORD $0 HKLM '${PRODUCT_DIR_REGKEY}' "MySqlInstalled"
IntCmp $0 1 0 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 1 0 no_run
   MessageBox MB_ICONSTOP "安装程序检测到 $(^Name) 正在运行,请退出程序后重试"
   Quit
   no_run:
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2
  Abort
FunctionEnd

Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从您的计算机移除。"
FunctionEnd
View Code

   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=2052 "ProductName" "${PRODUCT_NAME}"
VIAddVersionKey /LANG=2052 "Comments" "软件版权归XX软件所有,他人不得复制或二次开发本程序。"
VIAddVersionKey /LANG=2052 "CompanyName" "www.XX.com"
VIAddVersionKey /LANG=2052 "LegalTrademarks" "XX软件"
VIAddVersionKey /LANG=2052 "LegalCopyright" "XX.com"
VIAddVersionKey /LANG=2052 "FileDescription" "XX广告制作软件-V${PRODUCT_VERSION}升级程序"
VIAddVersionKey /LANG=2052 "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 1000
  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 1 ExecSql
            MessageBox MB_OK|MB_ICONEXCLAMATION "mysql数据库服务未启动,请启动后再升级程序!"
                Quit ;未启动则 退出更新安装程序
            ExecSql:
          ;更新数据
      ExecWait 'mysql --user=root --password=123456 --execute="source $INSTDIR\update.sql"' $2
          StrCmp $2 1 0 endinst
          MessageBox MB_OK|MB_ICONEXCLAMATION "数据库更新失败!请确认账号密码是否正确或数据库已安装!"
          Delete "$INSTDIR\update.sql" ;删除文件
                Quit ;未启动则 退出更新安装程序
            endinst:
            Delete "$INSTDIR\update.sql" ;删除文件
FunctionEnd

Function .onInit
 ;判断是否已安装
  ReadRegStr $0 HKLM "${PRODUCT_DIR_REGKEY}" ""
  StrCmp $0 "" 0 NoAbort
    MessageBox MB_OK|MB_ICONEXCLAMATION "您未正确安装${PRODUCT_NAME},不能使用此升级程序!"
    Abort ;退出安装程序
  NoAbort:
  
   ;程序正在运行则关闭程序
  Push $R0
  CheckProc:
    Push "YBest.Ads.exe"
    ProcessWork::existsprocess
    Pop $R0
    IntCmp $R0 0 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 1000
    Goto CheckProc
    Exit:
    Abort
    Done:
    Pop $R0
FunctionEnd
View Code

 

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
VC6.0从开发activex ocx控件到发布到网上全过程
ActiveX控件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,将主页中的控件下载,并在用户机器上注册,以后就可在用户的浏览器上运行。控件下载一次后就驻留在用户本地机器上,下次再访问相同的主页时,可不再下载该控件,而是直接运行用户本地的控件。
1089 0
win10 uwp 如何打包Nuget给其他人
原文:win10 uwp 如何打包Nuget给其他人 本文告诉大家,如果自己有做一些好用的库,如何使用 Nuget 打包之后上传,分享给大家。
891 0
NSIS安装程序制作工具判断系统是否安装.NET
前段时间忙了很久的系统总算上线了,由于是WinForm程序不能整个文件夹的发给客户使用。所以必须要打包,记得以前在VS2005中是自带部署功能的。现在换了VS2013那个部署功能完全弄不清方向。最后在网上找了NSIS这个开源的安装程序制作工具。
1015 0
VS2010对WinForm项目生成安装文件
今天来学习一下,WinForm项目打包,生成安装文件。 第一步先来建一个最简单的Windows窗体应用程序,并为项目命名为WinFormTest,解决方案为WinFormSetup 第二步在窗体Form中添加一个按钮并在按钮事件中添加代码,只做测试因此简单一点 namespace Wi...
424 0
UWP: 通过命令行启动 UWP 应用
原文:UWP: 通过命令行启动 UWP 应用 最近在开发应用的过程中,我遇到了如标题所述的需求,其实主要是为了能够快捷启动应用,正像我们可以在“运行”对话框中可以输入一些可执行程序的名称后,就能够直接启动它;这样做,可以增加 App 的易用性。
1255 0
Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件
Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件
0 0
【UWP开发】uwp应用安装失败
原文:【UWP开发】uwp应用安装失败 编译出了uwp应用.appx之后双击打开,报错你需要为此应用包而安装的新证书,或者是带有受信任证书的新应用包。系统管理员或应用开发人员可以提供帮助。证书链在不受信任的根证书中进行处理,但也在其中终止 (0x800B0109) 解决办法: 1、右键.
2650 0
Win10 UWP开发系列——开源控件库:UWPCommunityToolkit
原文:Win10 UWP开发系列——开源控件库:UWPCommunityToolkit 在开发应用的过程中,不可避免的会使用第三方类库。之前用过一个WinRTXamlToolkit.UWP,现在微软官方发布了一个新的开源控件库—— UWPCommunityToolkit 项目代码托管在Github上:https://github.com/Microsoft/UWPCommunityToolkit 包括以下几个类库: 都可以很方便的从Nuget上安装。
892 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
15分钟打造你自己的小程序更新版
立即下载
宏光S导航安装教程
立即下载
低代码开发师(初级)实战教程
立即下载