NSIS打包程序步骤

NSIS 打包的话,它相当于是一门独立的脚本语言,官放文档地址:官方文档地址
不同于C、C++,但是也可以进行C、C++的混合编程。
主要是为了制作win安装包而产生的。

废话不多说,直接上主题:

1、操作步骤

这个步骤呢,就是傻瓜式操作了,点下一步下一步就好。
在这里插入图片描述
在这选择安装图标,必须是ico的,安装程序文件名称可以更改,语言的话,支持的语言挺多,自己看着选。
在这里插入图片描述
这些根据自己需求填写:
在这里插入图片描述
在这里插入图片描述
这里的安装路径可以写绝对路径。
在这里插入图片描述
在这里插入图片描述
这些步骤就是下一步下一步的来就好。最终会生成一个代码文件。要做的操作就是在代码中进行。

这里就根据我的需求来说了:

需求是需要在程序安装后加一个输入页面,可以让用户输入服务器IP,并且存到文件中。

加页面的话,引入nsDialogs就可以。

!include "nsDialogs.nsh"
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} ""
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} ""
!insertmacro MUI_FUNCTION_DESCRIPTION_END
#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--#
Var SHOW_PAGE  # 是否显示自定义页面
;Page custom test nsDialogsPageLeave
Function PageInitFuncStrCmp $SHOW_PAGE "show" 0 +1 # 如果没有设置“show”则跳过下面的页面显示
FunctionEnd
Function test       ;这是一个函数的定义,这个函数名字是test,这个函数是为了生成一个页面,页面里面可以自定义控件,就如同MFC里面的控件一样nsDialogs::Create 1018Pop $dialog                         ;创建一个对话框后会返回这个对话框的HWND(同句柄)到堆栈,这个HWND必须保存到某个自定义变量中去,否则会被覆盖掉,;  这个HWND可以保存在自定义变量中,为了以后对该控件进行其它操作。${NSD_CreateLabel} 0 35% 100% 18u "服务器IP地址:"${NSD_CreateText} 0% 50% 100% 10% ""Pop $server                           ;同样创建一个控件也会返回一个HWND到堆栈中,可以保存到自定义变量中去,我就是把这个文本控件的返回值${NSD_OnChange} $server nsDialogsPageTextChange${NSD_CreateButton} 390 140 60 30 "确认启动"Pop $0${NSD_OnClick} $0 confirmSunc/*${NSD_CreateLabel} 0 35% 100% 18u "ServerActive:"${NSD_CreateText} 0% 50% 100% 8% "ServerActive = TJ_Server_IP"Pop $serverActive${NSD_OnChange} $serverActive nsDialogsPageTextChange*/;${NSD_CreateText} 0% 40% 100% 8% "Hostname = localhost";   Pop $hostname;${NSD_OnChange} $hostname nsDialogsPageTextChangensDialogs::ShowFunctionEndFunction confirmSuncnsExec::Exec '$INSTDIR/getName.bat'nsExec::Exec '$INSTDIR/start.bat'MessageBox MB_OK "安装启动成功"
FunctionEndFunction nsDialogsPageTextChange${NSD_GetText} $server $serverText;${NSD_GetText} $serverActive $serverActiveText;${NSD_GetText} $hostname $hostnameTextStrCpy $other "LogFile=C:\Program Files\TianJing Agent\tianJg_agentd.log$\r$\nTimeout=10$\r$\nEnableRemoteCommands=1$\r$\nLogRemoteCommands=1$\r$\nUnsafeUserParameters=1"ClearErrorsFileOpen $0 $INSTDIR\tianJg_agentd.conf wIfErrors doneFileWrite $0 "Server = $serverText$\r$\nServerActive = $serverText$\r$\nHostname=localhost$\r$\n$other"FileClose $0done:
FunctionEnd#关闭界面后触发
Function nsDialogsPageLeaveMessageBox MB_OK "安装成功"nsExec::Exec '$INSTDIR/getName.bat'nsExec::Exec '$INSTDIR/start.bat'
FunctionEnd

这是核心代码。就是通过控件、函数完成需求。

${NSD_GetText} $server $serverText

这行就是 根据指针拿到对应的实际值。

ClearErrorsFileOpen $0 $INSTDIR\tianJg_agentd.conf wIfErrors doneFileWrite $0 "Server = $serverText$\r$\nServerActive = $serverText$\r$\nHostname=localhost$\r$\n$other"FileClose $0done:

这几行就是写入文件的关键代码,$INSTDIR这个参数就是安装路径。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部