开源115浏览器使用例子

;ExecShell taskbarunpin "$DESKTOP\${PRODUCT_NAME}.lnk"是删除任务栏图标

;安装包 解压空白
!system '>blank set/p=MSCF<nul' !packhdr="" temp.dat="" 'cmd="" c="" copy="" b="" +blank&&del="" blank'=""
${OrIf} $0 < 0
System::Int64Op $0 / 1024
Pop $0
StrCpy $1 "KB"
${If} $0 > 1024
${OrIf} $0 < 0
System::Int64Op $0 / 1024
Pop $0
StrCpy $1 "MB"
${If} $0 > 1024
${OrIf} $0 < 0
System::Int64Op $0 / 1024
Pop $0
StrCpy $1 "GB"
${EndIf}
${EndIf}
${EndIf}

StrCpy $FreeSpaceSize "$0$1"
FunctionEnd

Function FreshInstallDataStatusFunc
;更新磁盘空间文本显示
nsSkinEngine::FindControl "InstallTab_FreeSpace"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have InstallTab_FreeSpace"
${Else}
nsSkinEngine::SetControlData "InstallTab_FreeSpace" $FreeSpaceSize "text"
${EndIf}
;路径是否合法(合法则不为0Bytes)
${If} $FreeSpaceSize == "0Bytes"
nsSkinEngine::SetControlData "InstallTab_InstallBtn" "false" "enable"
${Else}
nsSkinEngine::SetControlData "InstallTab_InstallBtn" "true" "enable"
${EndIf}
FunctionEnd

Function OnTextChangeFunc
; 改变可用磁盘空间大小
nsSkinEngine::GetControlData InstallTab_InstallFilePath "text"
Pop $0
;MessageBox MB_OK $0
StrCpy $INSTDIR $0

;重新获取磁盘空间
Call UpdateFreeSpace
Call FreshInstallDataStatusFunc
FunctionEnd

Function OnInstallPathBrownBtnFunc
nsSkinEngine::GetControlData "InstallTab_InstallFilePath" "text" ;
Pop $installPath
nsSkinEngine::SelectFolderDialog "请选择文件夹" $installPath
Pop $installPath

StrCpy $0 $installPath
${If} $0 == "-1"
${Else}
StrCpy $INSTDIR "$installPath\${PRODUCT_NAME_EN}"
;设置安装路径编辑框文本
nsSkinEngine::FindControl "InstallTab_InstallFilePath"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have Wizard_InstallPathBtn4Page2 button"
${Else}
;nsSkinEngine::SetText2Control "InstallTab_InstallFilePath" $installPath
StrCpy $installPath $INSTDIR
nsSkinEngine::SetControlData "InstallTab_InstallFilePath" $installPath "text"
${EndIf}
${EndIf}

;重新获取磁盘空间
Call UpdateFreeSpace
Call FreshInstallDataStatusFunc
FunctionEnd

Function OnCheckChanged
nsSkinEngine::GetControlData "CustomOptionsCheckBox" "Checked" ;
Pop $0
${If} $0 == "1"
nsSkinEngine::NSISResize "445" "608"
nsSkinEngine::SetControlData "customVer" "true" "visible"
${Else}
nsSkinEngine::NSISResize "445" "462"
nsSkinEngine::SetControlData "customVer" "false" "visible"
${EndIf}
FunctionEnd

Function acceptCheckChangedFunc
nsSkinEngine::GetControlData "acceptCheckBox" "Checked" ;
Pop $0
${If} $0 == "1"
nsSkinEngine::SetControlData "InstallBtn" "true" "enable"
${Else}
nsSkinEngine::SetControlData "InstallBtn" "false" "enable"
${EndIf}
FunctionEnd

Function acceptPageFunc
nsSkinEngine::SetControlData "windowbk" "1" "TabCurrentIndexInt"
nsSkinEngine::ShowLicense "acceptInfo" "license.txt"
FunctionEnd

Function acceptOkFunc
nsSkinEngine::SetControlData "windowbk" "0" "TabCurrentIndexInt"
FunctionEnd

Function InstallPageFunc
nsSkinEngine::SetControlData "InstallTab_sysCloseBtn" "false" "enable"
nsSkinEngine::NSISResize "445" "462"
nsSkinEngine::SetControlData "customVer" "false" "visible"
Call OnNextBtnFunc
;设置进度条
nsSkinEngine::SetControlData "CompleteTab_RunAppCheckBox" "true" "Checked" ;默认勾选运行程序
nsSkinEngine::FindControl "InstallProgressBar"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have InstallProgressBar"
${Else}
nsSkinEngine::SetControlData "InstallProgressBar" "0" "ProgressInt"
nsSkinEngine::SetControlData "progressText" "0%" "text"
nsSkinEngine::NSISStopMsgLoop
${EndIf}
FunctionEnd

Function InstallShow
nsSkinEngine::FindControl "InstallProgressBar"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have InstallProgressBar"
${Else}
nsSkinEngine::NSISBindingProgress "InstallProgressBar" "progressText"
${EndIf}
FunctionEnd

Section InstallFiles
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File /r "bin\*.*"
SectionEnd

Section RegistKeys
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\${MAIN_APP_NAME}"
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\${MAIN_APP_NAME},0"
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}"
SectionEnd

Section CreateShorts
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
SetShellVarContext all
;创建开始菜单快捷方式
CreateDirectory "$SMPROGRAMS\Google Translate"
CreateShortCut "$SMPROGRAMS\Google Translate\${PRODUCT_NAME}.lnk" "$INSTDIR\${MAIN_APP_NAME}"
CreateShortCut "$SMPROGRAMS\Google Translate\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url"
CreateShortCut "$SMPROGRAMS\Google Translate\Uninstall.lnk" "$INSTDIR\uninst.exe"
SetOverwrite ifnewer
nsSkinEngine::GetControlData "deskShortCheckBox" "Checked" ;
Pop $0
${If} $0 == "1"
;创建桌面快捷方式
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${MAIN_APP_NAME}"
${EndIf}

/* CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\${MAIN_APP_NAME}"
System::Call 'shell32.dll::ShellExecute(i 0, t "taskbarpin", t "$QUICKLAUNCH\${PRODUCT_NAME}.lnk", i 0, i 0, i 0) i .r1 ?e' */
Call RefreshShellIcons
SectionEnd

Section Finish
nsSkinEngine::SetControlData "InstallTab_sysCloseBtn" "true" "enable"
nsSkinEngine::GetControlData "2345CheckBox" "Checked" ;
Pop $0
${If} $0 == "1"
;设置浏览器首页
WriteRegStr HKCU "Software\Microsoft\Internet Explorer\Main" "Start Page" "${PRODUCT_2345WEB_SITE}"
${EndIf}
SectionEnd

Function OnCompleteBtnFunc
nsSkinEngine::HideNSISSkinEngine
nsSkinEngine::StopAnimationBkControl
nsSkinEngine::GetControlData "autoCheckBox" "Checked" ;
Pop $0
${If} $0 == "1"
WriteRegStr HKCU "${PRODUCT_AUTORUN_KEY}" "${PRODUCT_NAME}" "$INSTDIR\${MAIN_APP_NAME} -mini"
${EndIf}

Exec '"$INSTDIR\${MAIN_APP_NAME}"'
nsSkinEngine::ExitNSISSkinEngine "false"
FunctionEnd
Function un.accept
nsSkinEngine::NSISSendMessage $Dialog WM_NSISOPENURL "http://www.yhxs3344.net/";
FunctionEnd
;-----------------------------------------------------------------------------------------------------------------------------

Function un.onInit
;创建互斥防止重复运行
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "aceuiUnInstall") i .r1 ?e'
Pop $R0
StrCmp $R0 0 +3
MessageBox MB_OK|MB_ICONEXCLAMATION "有一个 115浏览器 卸载向导已经运行!"
Abort

SetOutPath "${UNINSTALL_DIR}"
File /r /x *.db ".\resouce\115Browser\*.*"

KillProcDLL::KillProc "${MAIN_APP_NAME}" ;强制结束进程
FunctionEnd

Function un.UninstallProgress
nsSkinEngine::InitNSISSkinEngine /NOUNLOAD "${UNINSTALL_DIR}" "UninstallPackages.xml" "WizardTab" "false" "115浏览器" "7B4D2AD97EC46776D7504B1F501B17483E5EFD52B3BA9E8BE9D6401E4F742E19B822CC7DDF6FC224A5D8AAFB9FFC899B" "app.ico" "true"
Pop $Dialog
;初始化MessageBox窗口
nsSkinEngine::InitNSISMessageBox "MessageBox.xml" "TitleLab" "TextLab" "CloseBtn" "YESBtn" "NOBtn"
Pop $MessageBoxHandle

;关闭按钮绑定函数
nsSkinEngine::FindControl "sysCloseBtn"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have sysCloseBtn"
${Else}
GetFunctionAddress $0 un.OnUnInstallCancelFunc
nsSkinEngine::OnControlBindNSISScript "sysCloseBtn" $0
${EndIf}

;取消按钮绑定函数
nsSkinEngine::FindControl "cancelUninstallBtn"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have cancelUninstallBtn"
${Else}
GetFunctionAddress $0 un.OnUnInstallCancelFunc
nsSkinEngine::OnControlBindNSISScript "cancelUninstallBtn" $0
${EndIf}

;残忍卸载 okUninstallBtn
nsSkinEngine::FindControl "okUninstallBtn"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have okUninstallBtn"
${Else}
GetFunctionAddress $0 un.UnInstallPageFunc
nsSkinEngine::OnControlBindNSISScript "okUninstallBtn" $0
${EndIf}

;卸载完成 completeBtn
nsSkinEngine::FindControl "completeBtn"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have completeBtn"
${Else}
GetFunctionAddress $0 un.OnCompleteBtnFunc
nsSkinEngine::OnControlBindNSISScript "completeBtn" $0
${EndIf}

;--------------------------------------窗体显示-----------------------------------
nsSkinEngine::RunNSISSkinEngine
FunctionEnd

Function un.OnUnInstallCancelFunc
nsSkinEngine::ExitNSISSkinEngine
FunctionEnd

Function un.OnNextBtnFunc
nsSkinEngine::NSISSendMessage $Dialog WM_NSISNEXT
FunctionEnd

Function un.UnInstallPageFunc
Call un.OnNextBtnFunc
nsSkinEngine::NSISStopMsgLoop
FunctionEnd

Function un.UninstallNow
nsSkinEngine::FindControl "UnInstallProgressBar"
Pop $0
${If} $0 == "-1"
MessageBox MB_OK "Do not have UnInstallProgressBar"
${Else}
nsSkinEngine::NSISBindingProgress "UnInstallProgressBar" "progressText"
${EndIf}
FunctionEnd

Section "Uninstall"
# 设置为当前用户
SetShellVarContext current
# 设置为所有用户
SetShellVarContext all

Delete "$SMPROGRAMS\Google Translate\*.lnk"
Delete "$SMPROGRAMS\Google Translate\Uninstall.lnk"
Delete "$SMPROGRAMS\Google Translate\Website.lnk"
Delete "$SMPROGRAMS\Google Translate\${PRODUCT_NAME}.lnk"
Delete "$DESKTOP\${PRODUCT_NAME}.lnk"
RMDir /r /REBOOTOK "$SMPROGRAMS\Google Translate"
RMDir /r /REBOOTOK "$INSTDIR"

DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Google Translate"
DeleteRegValue HKCU "${PRODUCT_AUTORUN_KEY}" "${PRODUCT_NAME}"

SectionEnd

Function un.OnCompleteBtnFunc
nsSkinEngine::HideNSISSkinEngine
;Call un.SendStatistics
;Call un.DeleteRegKey ;发送完统计再调用删除key,因为发送可能需要某些键值
nsSkinEngine::ExitNSISSkinEngine
FunctionEnd

;刷新关联图标
Function RefreshShellIcons
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \
(${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
FunctionEnd

Function .onInstSuccess
FunctionEnd
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容