脚本:仿Inno安装页面
优质
小牛编辑
160浏览
2023-12-01
引用 Setup.nsi 的内容:
!addPluginDir ".\" !include "MUI2.nsh" !include "WinVer.nsh" !include "TextFunc.nsh" Name "测试程序" Caption "$(^NameDA) 1.0" OutFile Setup.exe ;SetFont "Tahoma" 8 InstallDir $TEMP RequestExecutionLevel Admin !define __NSD_Textbox_CLASS EDIT !define __NSD_Textbox_STYLE ${DEFAULT_STYLES}|${WS_VSCROLL}|${WS_TABSTOP}|${ES_MULTILINE} !define __NSD_Textbox_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} !insertmacro __NSD_DefineControl Textbox ;卸载项目位置 !define PRODUCT_UNINST_ROOT "HKLM" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\{88B5E49E-3D0E-49F8-8BC6-BBB276B3CB21}" !define MUI_COMPONENTSPAGE_NODESC !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_COMPONENTS Var ICONS_GROUP ;!define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_ID Application !define MUI_STARTMENUPAGE_DEFAULTFOLDER "$(^NameDA)" ;将开始菜单文件夹记录在卸载项目。如果放在其他位置,请更改。 !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "NSIS:StartMenu" !insertmacro MUI_PAGE_STARTMENU ${MUI_STARTMENUPAGE_ID} $ICONS_GROUP Page custom AddTasks GetState Page custom Prepare !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "SimpChinese" InstType "完全" InstType "精简" Section "安装组件示例①" SEC01 SectionIn 1 2 SectionEnd Section /o "安装组件示例②" SEC02 SectionIn 1 SectionEnd Section /o "安装组件示例③" SEC03 SectionIn 1 SectionEnd Var HCHK1 Var HCHK2 Var TEXT1 Var TEXT2 ;脚本仅示范页面,无论选中与否均不执行任何操作,包括创建快捷方式。 ;请自行在页面离开函数判断是否选中,并相应创建快捷方式或其他功能。 ;要选中附加任务选项 Function .onInit StrCpy $HCHK1 1 ;StrCpy $HCHK2 1 SendMessage ${HWND_BROADCAST} ${WM_SETTINGCHANGE} 0 0 ;Delete /RebootOK $EXEFILE Rename /RebootOK $EXEFILE $EXEFILE.tmp FunctionEnd Function AddTasks !insertmacro MUI_HEADER_TEXT "选择附加任务" "您想要安装程序执行哪些附加任务?" nsDialogs::Create 1018 Pop $0 ${If} $0 == error Abort ${EndIf} ${NSD_CreateLabel} 0u 0u 300u 18u "选择您想要安装程序在安装“$(^NameDA)”时执行的附加任务,然后单击“下一步”。" Pop $1 ${NSD_CreateCheckBox} 10u 23u 280u 9u "创建桌面快捷方式" Pop $2 ${NSD_SetState} $2 $HCHK1 ${NSD_CreateCheckBox} 10u 37u 280u 9u "创建快速启动栏快捷方式" Pop $3 ${NSD_SetState} $3 $HCHK2 nsDialogs::Show FunctionEnd Function GetState SendMessage $2 ${BM_GETSTATE} 0 0 $HCHK1 SendMessage $3 ${BM_GETSTATE} 0 0 $HCHK2 ${NSD_GetText} $2 $TEXT1 ${NSD_GetText} $3 $TEXT2 FunctionEnd Function Prepare !insertmacro MUI_HEADER_TEXT "准备安装" "安装程序现在准备开始安装“$(^NameDA)”到您的电脑中。" nsDialogs::Create 1018 Pop $0 ${If} $0 == error Abort ${EndIf} Var /Global PREPARE_TEMP Var /Global PREPARE_TEXT ${NSD_CreateLabel} 0u 0u 300u 18u "单击“安装”继续此安装程序。如果您想要回滚或改变设置,请单击“上一步”。" Pop $1 ${If} ${IsNT} StrCpy $0 "SOFTWARE\Microsoft\Windows NT\CurrentVersion" ${Else} StrCpy $0 "SOFTWARE\Microsoft\Windows\CurrentVersion" ${EndIf} StrCpy $PREPARE_TEMP "" StrCpy $PREPARE_TEXT "" ReadRegStr $R0 HKLM $0 RegisteredOwner StrCpy $PREPARE_TEXT "$PREPARE_TEXT用户信息:$\r$\n $R0$\r$\n" ReadRegStr $R0 HKLM $0 RegisteredOrganization StrCpy $PREPARE_TEXT "$PREPARE_TEXT $R0$\r$\n$\r$\n" StrCpy $PREPARE_TEXT "$PREPARE_TEXT目标位置:$\r$\n $INSTDIR$\r$\n$\r$\n" GetCurInstType $0 IntCmp $0 ${NSIS_MAX_INST_TYPES} 0 +3 +3 StrCpy $0 "$(^Custom)" Goto +2 InstTypeGetText $0 $0 StrCpy $PREPARE_TEXT "$PREPARE_TEXT安装类型:$\r$\n $0$\r$\n$\r$\n" SectionGetFlags ${SEC01} $0 IntCmp $0 ${SF_SELECTED} 0 +3 +3 SectionGetText ${SEC01} $0 StrCpy $PREPARE_TEMP "$PREPARE_TEMP $0$\r$\n" SectionGetFlags ${SEC02} $0 IntCmp $0 ${SF_SELECTED} 0 +3 +3 SectionGetText ${SEC02} $0 StrCpy $PREPARE_TEMP "$PREPARE_TEMP $0$\r$\n" SectionGetFlags ${SEC03} $0 IntCmp $0 ${SF_SELECTED} 0 +3 +3 SectionGetText ${SEC03} $0 StrCpy $PREPARE_TEMP "$PREPARE_TEMP $0$\r$\n" ;SectionGetFlags ${组件索引} $0 ;IntCmp $0 ${SF_SELECTED} 0 +3 +3 ;SectionGetText ${组件索引} $0 ;StrCpy $PREPARE_TEMP "$PREPARE_TEMP $0$\r$\n" StrCmp $PREPARE_TEMP "" +2 StrCpy $PREPARE_TEXT "$PREPARE_TEXT选定组件:$\r$\n$PREPARE_TEMP$\r$\n" !insertmacro MUI_STARTMENU_WRITE_BEGIN ${MUI_STARTMENUPAGE_ID} StrCpy $PREPARE_TEXT "$PREPARE_TEXT开始菜单文件夹:$\r$\n $ICONS_GROUP$\r$\n$\r$\n" !insertmacro MUI_STARTMENU_WRITE_END StrCpy $PREPARE_TEMP "" IntCmp $HCHK1 ${BST_CHECKED} 0 +2 +2 StrCpy $PREPARE_TEMP "$PREPARE_TEMP $TEXT1$\r$\n" IntCmp $HCHK2 ${BST_CHECKED} 0 +2 +2 StrCpy $PREPARE_TEMP "$PREPARE_TEMP $TEXT2$\r$\n" IntOp $R0 $HCHK1 || $HCHK2 IntCmp $R0 0 +2 StrCpy $PREPARE_TEXT "$PREPARE_TEXT附加任务:$\r$\n$PREPARE_TEMP" ${TrimNewLines} $PREPARE_TEXT $PREPARE_TEXT ${NSD_CreateTextbox} 0u 24u 300u 116u "$PREPARE_TEXT" Pop $2 SendMessage $2 ${EM_SETREADONLY} 1 0 nsDialogs::Show FunctionEnd