论坛风格切换切换到宽版
  • 3016阅读
  • 3回复

请教大家关于nsis一个实现的问题 [复制链接]

上一主题 下一主题
离线wujintaowjt
 

发帖
1
金钱
10
威望
1
只看楼主 倒序阅读 0 发表于: 2014-05-14


nsis能不能实现这种安装程序的功能,利用nsis和插件能做出来么
离线mefcl

发帖
48
金钱
190
威望
19
只看该作者 1 发表于: 2014-06-17
用现有的插件能实现,具体的不会的话可以看看烂菜同学的酷狗安装包教程。网上能搜到
博客:http://mefcl.com/
离线mhpty123

发帖
2
金钱
20
威望
2
只看该作者 2 发表于: 2015-06-17
回 1楼(mefcl) 的帖子
mefcl:用现有的插件能实现,具体的不会的话可以看看烂菜同学的酷狗安装包教程。网上能搜到 (2014-06-17 17:27)

我在网上找到了酷狗安装包的教程 但是窗口的边框去不掉 还有点击图片无法拖动窗口 请问咱们论坛里有烂菜同学么 怎么找到他啊

问题如下:


代码如下:
!include MUI.nsh
!include nsDialogs.nsh
!include nsWindows.nsh
!include WinMessages.nsh

Page custom WelcomePage ; 欢迎页面

; 安装程序设置
;SetCompressor lzma
Name Test  ; 安装程序名称
OutFile Test.exe  ; 输出文件 和nsi文件在同一个路径
XPStyle on ; 启用 WindowsXP 的视觉样式
;SetFont 宋体 9  ;设置字体


; 定义变量
Var Image
Var ImageHandle
Var Btn_Installtion
Var BROWSESOURCE
Var SOURCE
Var SOURCETEXT



Function .onInit
InitPluginsDir
File /oname=$PLUGINSDIR\Background.bmp "${NSISDIR}\Contrib\Graphics\Header\arrow.bmp"
  File /oname=$PLUGINSDIR\button.bmp "${NSISDIR}\Contrib\Graphics\Header\arrow2-uninstall.bmp"
  SkinBtn::Init "$PLUGINSDIR\button.bmp"  ;初始化按键皮肤
  SkinBtn::Init "$PLUGINSDIR\Background.bmp"
FunctionEnd

Function .onGUIInit
  ;消除边框
  System::Call `user32::SetWindowLong(i$HWNDPARENT,i${GWL_STYLE},0x9480084C)i.R0`
;隐藏一些既有控件
  GetDlgItem $0 $HWNDPARENT 1034
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 1035
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 1036
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 1037
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 1038
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 1039
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 1256
  ShowWindow $0 ${SW_HIDE}

  GetDlgItem $0 $HWNDPARENT -1 ;隐藏中间的线
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 1028 ;隐藏Label
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 1 ;隐藏Next按钮
  ShowWindow $0 ${SW_HIDE}
  GetDlgItem $0 $HWNDPARENT 2 ;隐藏Cancel按钮
  ShowWindow $0 ${SW_HIDE}
FunctionEnd

;处理无边框移动
Function onGUICallback
${If} $MSG = ${WM_LBUTTONDOWN}
  SendMessage $HWNDPARENT ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
${EndIf}
FunctionEnd
Function onWarningGUICallback
   ${If} $MSG = ${WM_LBUTTONDOWN}
    SendMessage $WarningForm ${WM_NCLBUTTONDOWN} ${HTCAPTION} $0
   ${EndIf}
FunctionEnd

;------------------------欢迎页面-------------------
Function WelcomePage
  #Create Dialog and quit if error
nsDialogs::Create /NOUNLOAD 1018
Pop $0
${If} $0 == error
  Abort
${EndIf}
SetCtlColors $0 ""  transparent ;背景设成透明

  ${NSW_SetWindowSize} $HWNDPARENT 520 350 ;改变窗体大小  513 354
  ${NSW_SetWindowSize} $0 520 350 ;改变Page大小

StrCpy $SOURCE "D:\Program Files"

${NSD_CreateLabel} 0 273 60 12u "安装目录:"

${NSD_CreateText} 70 270 60% 12u "$SOURCE"
pop $SOURCETEXT

${NSD_CreateBrowseButton} 400 270 60 12u "Browse"
  pop $BROWSESOURCE
${NSD_OnClick} $BROWSESOURCE Browsesource
  
${NSD_Createcheckbox} 0 307 55 12u "我同意"
  
${NSD_CreateLink} 56 310 60 12u "许可协议"
  Pop $R0
  SetCtlColors $R0 0xFF8040 transparent
  ${NSD_OnClick} $R0 OnClick_License

  ${NSD_CreateButton} 219 300 60 12u "" ;
  Pop $Btn_Installtion
  SkinBtn::Set /IMGID=$PLUGINSDIR\button.bmp $Btn_Installtion ; 设置按钮皮肤
GetFunctionAddress $1 OnClick_Install
;GetFunctionAddress $1 onCancel
  SkinBtn::onClick $Btn_Installtion $1

  ${NSD_CreateBitmap} 0 0 100% 100% ""  ;贴背景图
  Pop $Image
  ${NSD_SetImage} $Image $PLUGINSDIR\Background.bmp $ImageHandle
  ;GetFunctionAddress $0 onGUICallback
  ;WndProc::onCallback $Image $0 ;处理无边框窗体移动,有问题
nsDialogs::Show
  ${NSD_FreeImage} $ImageHandle ;释放该图片内存区
FunctionEnd

Section
SectionEnd
离线mefcl

发帖
48
金钱
190
威望
19
只看该作者 3 发表于: 2015-06-18
回 2楼(mhpty123) 的帖子
都说看教程了- -要修改UI啊,使用ResHacker去修改。还有拖动窗口这些都不是一句两句能说清楚的,你去多看看资料,给你个地址:
  1. http://pan.baidu.com/s/1eQgo7JG


博客:http://mefcl.com/