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 PageInitFunc
  StrCmp $SHOW_PAGE "show" 0 +1 # 如果没有设置“show”则跳过下面的页面显示
FunctionEnd
Function test       ;这是一个函数的定义,这个函数名字是test,这个函数是为了生成一个页面,页面里面可以自定义控件,就如同MFC里面的控件一样
    nsDialogs::Create 1018
    Pop $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 nsDialogsPageTextChange

    nsDialogs::Show
    
FunctionEnd

Function confirmSunc
         nsExec::Exec '$INSTDIR/getName.bat'
         nsExec::Exec '$INSTDIR/start.bat'
         MessageBox MB_OK "安装启动成功"
FunctionEnd

Function nsDialogsPageTextChange
    ${NSD_GetText} $server $serverText
    ;${NSD_GetText} $serverActive $serverActiveText
    ;${NSD_GetText} $hostname $hostnameText
    
    StrCpy $other "LogFile=C:\Program Files\TianJing Agent\tianJg_agentd.log$\r$\nTimeout=10$\r$\nEnableRemoteCommands=1$\r$\nLogRemoteCommands=1$\r$\nUnsafeUserParameters=1"

    ClearErrors
    FileOpen $0 $INSTDIR\tianJg_agentd.conf w
    IfErrors done
    FileWrite $0 "Server = $serverText$\r$\nServerActive = $serverText$\r$\nHostname=localhost$\r$\n$other"
    FileClose $0
    done:
FunctionEnd

#关闭界面后触发
Function nsDialogsPageLeave
         MessageBox MB_OK "安装成功"
         nsExec::Exec '$INSTDIR/getName.bat'
         nsExec::Exec '$INSTDIR/start.bat'
FunctionEnd

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

${NSD_GetText} $server $serverText

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

ClearErrors
    FileOpen $0 $INSTDIR\tianJg_agentd.conf w
    IfErrors done
    FileWrite $0 "Server = $serverText$\r$\nServerActive = $serverText$\r$\nHostname=localhost$\r$\n$other"
    FileClose $0
    done:

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哇呜哦~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值