Installation NSIS在显示详细信息后隐藏详细信息

Installation NSIS在显示详细信息后隐藏详细信息,installation,nsis,Installation,Nsis,在我的安装程序中,我当前看到了“显示详细信息”按钮,可以单击该按钮查看安装详细信息 有没有办法在此时获得“隐藏详细信息”按钮,以便能够返回到隐藏详细信息的位置?官方对此没有支持(按钮可能浪费了太多空间) 如果您确实想要此功能,并且不介意黑客攻击,则可以使用以下代码: Outfile test.exe RequestExecutionLevel user !addplugindir ".\" ;http://nsis.sourceforge.net/ButtonEvent_plug-in !in

在我的安装程序中,我当前看到了“显示详细信息”按钮,可以单击该按钮查看安装详细信息


有没有办法在此时获得“隐藏详细信息”按钮,以便能够返回到隐藏详细信息的位置?

官方对此没有支持(按钮可能浪费了太多空间)

如果您确实想要此功能,并且不介意黑客攻击,则可以使用以下代码:

Outfile test.exe
RequestExecutionLevel user
!addplugindir ".\" ;http://nsis.sourceforge.net/ButtonEvent_plug-in

!include WinMessages.nsh
!include LogicLib.nsh

Page InstFiles "" PageInstShow

!define GWLP_ID -12
!define IDC_DETAILS 0x3F8
!define IDC_SHOWDETAILS 0x403
!define IDC_MYTOGGLE 0x1000

Function MyToggleClickHandler
FindWindow $9 "#32770" "" $HWNDPARENT
GetDlgItem $8 $9 ${IDC_MYTOGGLE}
GetDlgItem $7 $9 ${IDC_DETAILS}
System::Call 'user32::IsWindowVisible(ir7)i.r0'
${If} $0 = 0
    SendMessage $9 ${WM_COMMAND} ${IDC_SHOWDETAILS} 0
    SendMessage $8 ${WM_SETTEXT} 0 "STR:Hide &details"
    ShowWindow $8 1
${Else}
    SendMessage $8 ${WM_SETTEXT} 0 "STR:$(^ShowDetailsBtn)"
    ShowWindow $7 0
${EndIf}
FunctionEnd

Function PageInstShow
FindWindow $9 "#32770" "" $HWNDPARENT
GetDlgItem $8 $9 ${IDC_SHOWDETAILS}
System::Call 'user32::SetWindowLong(ir8,i ${GWLP_ID},i ${IDC_MYTOGGLE})'
GetFunctionAddress $1 MyToggleClickHandler
ButtonEvent::AddEventHandler ${IDC_MYTOGGLE} $1
System::Call '*(i,i,i,i)i.r1'
System::Call 'user32::GetWindowRect(ir8,ir1)'
System::Call 'user32::MapWindowPoints(i0,ir9,ir1,i2)'
System::Call '*$1(i,i,i,i.r6)'
GetDlgItem $7 $9 ${IDC_DETAILS}
System::Call 'user32::GetWindowRect(ir7,ir1)'
System::Call 'user32::MapWindowPoints(i0,ir9,ir1,i2)'
System::Call '*$1(i.r2,i.r3,i.r4,i.r5)'
System::Free $1
IntOp $3 $6 + 4 ; list top = button bottom + padding
IntOp $5 $5 - $3
System::Call 'user32::SetWindowPos(ir7,i,ir2,ir3,ir4,ir5,i 0)'
FunctionEnd

Section
SectionEnd

来自NSIS脚本参考文档:

隐藏|显示|永不显示

设置是否显示安装的详细信息。可以是 “隐藏”默认情况下隐藏详细信息,允许用户查看, 或“show”默认显示它们,或“nevershow”阻止用户 从没有见过他们。请注意,节可以使用 SetDetailsView