设为首页 收藏本站

NSIS中文论坛

查看: 412|回复: 8

[求助] 新人,求助,这个安装包是如何实现的!

[复制链接]
  • TA的每日心情
    难过
    2018-4-11 04:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    10

    帖子

    50

    积分

    积分
    50
    QQ
    发表于 2018-4-11 03:56:58 | 显示全部楼层 |阅读模式


    最近也在学习软件打包,看见这个做得挺好的,请问一下大神们,这个如何实现。谢谢了》。。
    Capture1.PNG
    --------------------------------------------------
    Capture2.PNG
    -------------------------------------------------
    Capture3.PNG
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 23:07
  • 签到天数: 93 天

    [LV.6]常住居民II

    12

    主题

    35

    帖子

    1562

    积分

    积分
    1562
    发表于 2018-4-20 07:37:40 | 显示全部楼层
    本帖最后由 xt2zsun 于 2018-4-27 09:58 编辑

    在学,弄了一个礼拜,七拼八凑,脚本很乱,但大体与原安装界面相仿。凡是Flighty和jiake等高手的代码和脚本都收集一下,慢慢看吧。
    #压缩设置
      SetCompressor /SOLID lzma
      SetCompressorDictSize 32
      SetDatablockOptimize on
      SetCompress auto

    Var Dialog
    Var Label
    Var Text
    !define Password "123"
    BGGradient 0xff0000 0xffffff
    #头文件
      !include "MUI2.nsh"
      !include "UsefulLib.nsh"
      
      !include "nsWindows.nsh" #
      
    #界面相关
      !define MUI_ICON "CW.ico"
      !define MUI_HEADERIMAGE
      !define MUI_HEADERIMAGE_BITMAP "Image\header.bmp"
      !define MUI_WELCOMEFINISHPAGE_BITMAP "Image\bg.bmp"
      !define MUI_PAGE_CUSTOMFUNCTION_SHOW licshow
    !define IDC_ABOUT 1300
    !define IDC_LINKER 1200 #
    !define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit
    ;  !define MUI_CUSTOMFUNCTION_GUIINIT .MyGUIInit
      Page custom WelcomePage
      !insertmacro MUI_PAGE_LICENSE "Readme.rtf"
      ShowInstDetails show
      Page Custom PasswordPageShow PasswordPageLeave
      Page instfiles
    #相关宏
      !insertmacro MUI_LANGUAGE "SimpChinese"
      
    LangString TEXT_BTN ${LANG_SIMPCHINESE} "关于(&A)"
    LangString TEXT_MSG ${LANG_SIMPCHINESE} "这是关于按钮示例脚本!"
    ChangeUI all "D:\NsisTest\modernhh.exe"
    BrandingText "W (hua2D0905@qq.com)汉化作品-编译时间:2018/3/25 14:14:39"

    #程序设置
      Caption "Camtasia 9.12.3011 完美汉化补丁 _20180325"
      OutFile "Camtasia汉化工具.exe"
      XPStyle on
    #程序执行前操作
      Section
      sectionend
      
      Function onGUIInit
      ;创建全屏背景
      FindWindow $0 '_Nb'
      EBanner::show /NOUNLOAD /FIT=BOTH /HWND=$0 "$EXEDIR\snowcoveredhills.bmp"
      ;创建链接
      ${CreateLinker2} "下载最新汉化补丁" 120 305 80 $2 $HWNDPARENT ${IDC_LINKER} "www.nsisfans.com"
      BrandingURL::Set /NOUNLOAD "200" "0" "0" "http://www.nsisfans.com"
      ;创建关于按钮
      System::Call `user32::SendMessage(i$HWNDPARENT,i${WM_GETFONT},i0,i0)i.s`
      System::Call `kernel32::GetModuleHandle(in)i.s`
      System::Call `*(i8,i201,i50,i14)i.R0`
      System::Call `user32::MapDialogRect(i$HWNDPARENT,iR0)`
      System::Call `*$R0(i.s,i.s,i.s,i.s)`
      System::Call `kernel32::GlobalFree(iR0)`
      System::Call `user32::CreateWindowEx(i,ts,ts,i${BS_PUSHBUTTON}|${WS_CHILD}|${WS_VISIBLE}|${WS_TABSTOP},is,is,is,is,i$HWNDPARENT,i${IDC_ABOUT},is,i)i.s` `Button` `$(TEXT_BTN)`
      System::Call `user32::SendMessage(is,i${WM_SETFONT},is,i0)`
      GetFunctionAddress $R0 FuncAbout
      ButtonEvent::AddEventHandler /NOUNLOAD ${IDC_ABOUT} $R0
    FunctionEnd
    Function FuncAbout
      MessageBox MB_OK|MB_ICONINFORMATION "$(TEXT_MSG)"
    FunctionEnd
    Function .onGUIEnd
      ButtonEvent::Unload
      BrandingURL::Unload
      EBanner::stop
    FunctionEnd
    Function .oninit
      InitPluginsDir
        ;设置输出路径且当路径不存在时创建,设定当前的工作目录
        SetOutPath $PluginsDIR
        File /oname=$PLUGINSDIR\bg.bmp "Image\bg.bmp"
      Functionend
    Function WelcomePage
      nsDialogs::Create 1044 # 1044 用于Welcome或Finish页面。位图尺寸500X295
    Pop $0
    ${If} $0 == error
    Abort
    ${EndIf}
    SetCtlColors $0 "" transparent ;背景设成透明
    GetDlgItem $0 $HWNDPARENT 1028
    ShowWindow $0 ${SW_HIDE}
    ${NSD_Createbitmap} 0 0 100% 100% ""
    Pop $0
    File "/oname=$PLUGINSDIR\Wel.bmp" "Image\bg.bmp"
    ${NSD_SetImage} $0 $PLUGINSDIR\Wel.bmp $1
    nsDialogs::Show
    ${NSD_FreeImage} $1
    FunctionEnd
    Function licshow
    GetDlgItem $0 $HWNDPARENT 1028
    ShowWindow $0 ${SW_SHOW}
    GetDlgItem $0 $HWNDPARENT 3 ; 3 上一步
    ShowWindow $0 ${SW_HIDE}
    FunctionEnd
    Function PasswordPageShow
    GetDlgItem $0 $HWNDPARENT 3 ; 3 上一步
    ShowWindow $0 ${SW_SHOW}
    !Insertmacro MUI_HEADER_TEXT "输入密码" "安装程序需要一个正确的安装密码才能继续"
    ;在该页面中创建一个对话框,并在堆栈中返回其HWND值
    nsDialogs::Create /NOUNLOAD 1018
    ;从堆栈里弹出一个字串到用户变量
    Pop $Dialog
    ;如果结果错误,则在下一行退出
    ${If} $Dialog == error
    Abort
    ${EndIf}
    ${NSD_CreateLabel} 15u 10u 100u 12u "请致电88888888索取密码!"
    Pop $Label
    ${NSD_CreateGroupBox} 15u 45u -35u 70u "密码输入框"
    ${NSD_CreateText} 25u 75u -60u 12u ""
    Pop $Text
    ${NSD_SetFocus} $Text
    ;显示自定义页面
    nsDialogs::Show
    FunctionEnd
    ;离开时验证安装密码函数
    Function PasswordPageLeave
    ;获取用户输入的数据到变量R1
    ${NSD_GetText} $Text $R1
    ;验证密码
    StrCmp $R1 "${Password}" +3
    MessageBox MB_OK|MB_ICONEXCLAMATION "密码输入错误!请输入正确的安装密码!"
    Abort
    FunctionEnd

    快照1.jpg
    快照2.jpg
    快照3.jpg
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情

    2018-3-14 20:37
  • 签到天数: 65 天

    [LV.6]常住居民II

    93

    主题

    410

    帖子

    4671

    积分

    积分
    4671
    发表于 2018-4-12 09:07:58 | 显示全部楼层
    这不就是个自定义页面么?密码部分可参考http://www.flighty.cn/html/bushu/20140921_254.html
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2018-4-11 04:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    10

    帖子

    50

    积分

    积分
    50
    QQ
     楼主| 发表于 2018-4-13 02:30:21 | 显示全部楼层
    flighty 发表于 2018-4-12 09:07
    这不就是个自定义页面么?密码部分可参考http://www.flighty.cn/html/bushu/20140921_254.html
    ...

    谢谢啦,我解压了这个玩意,脚本不能编译,应该是缺少什么东西,一堆乱码了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-14 20:37
  • 签到天数: 65 天

    [LV.6]常住居民II

    93

    主题

    410

    帖子

    4671

    积分

    积分
    4671
    发表于 2018-4-17 10:46:58 | 显示全部楼层
    MaxDaniel 发表于 2018-4-13 02:30
    谢谢啦,我解压了这个玩意,脚本不能编译,应该是缺少什么东西,一堆乱码了 ...

    解出来的脚本不能直接用的……
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-14 20:37
  • 签到天数: 65 天

    [LV.6]常住居民II

    93

    主题

    410

    帖子

    4671

    积分

    积分
    4671
    发表于 2018-6-30 13:49:38 | 显示全部楼层
    xt2zsun 发表于 2018-4-20 07:37
    在学,弄了一个礼拜,七拼八凑,脚本很乱,但大体与原安装界面相仿。凡是Flighty和jiake等高手的代码和脚本 ...

    不错,哈哈
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 2 天

    [LV.1]初来乍到

    0

    主题

    7

    帖子

    43

    积分

    积分
    43
    发表于 6 天前 | 显示全部楼层

    老大应该奖励一下!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2018-4-11 04:24
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    10

    帖子

    50

    积分

    积分
    50
    QQ
     楼主| 发表于 5 天前 | 显示全部楼层
    只有代码,没有头文件这些,如何弄
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 23:07
  • 签到天数: 93 天

    [LV.6]常住居民II

    12

    主题

    35

    帖子

    1562

    积分

    积分
    1562
    发表于 3 天前 | 显示全部楼层
    MaxDaniel 发表于 2018-7-18 01:08
    只有代码,没有头文件这些,如何弄

    站里发布的NSIS2.5.1版本包含了这三个头文件。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|联系我们|NSIS中文论坛    

    GMT+8, 2018-7-23 03:58 , Processed in 0.030834 second(s), 15 queries , MemCache On.

    Powered by Discuz!X3.3

    © 2015-2017 NSISFANS.COM

    快速回复 返回顶部 返回列表