External License file: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Reverted edits by 85.250.181.40 to last version by ConversionBot)
m (Corrected link to System plug-in.)
Line 2: Line 2:


== Description ==
== Description ==
'''Requires:''' [[System]] plug-in.
'''Requires:''' [[System plug-in]].


MUI License page "show" function replaces current license text (Dummy.txt added during compilation) with (runtime) License.txt file content.  
MUI License page "show" function replaces current license text (Dummy.txt added during compilation) with (runtime) License.txt file content.  

Revision as of 06:11, 3 December 2005

Author: Takhir (talk, contrib)


Description

Requires: System plug-in.

MUI License page "show" function replaces current license text (Dummy.txt added during compilation) with (runtime) License.txt file content.

The Script

;--------------------------------
; Base names definition
 
  !define LIC_NAME "License.txt"
  !define APP_NAME "License Test"
 
 
;--------------------------------
; General Attributes
 
  Name "${APP_NAME}"
  OutFile "${APP_NAME}.exe"
 
 
;--------------------------------
; Interface
 
  !include "MUI.nsh"
  !insertmacro MUI_PAGE_WELCOME
  !define MUI_PAGE_CUSTOMFUNCTION_SHOW addLicense
  !insertmacro MUI_PAGE_LICENSE Dummy.txt
  !insertmacro MUI_LANGUAGE "English"
 
 
;--------------------------------
; Installer Sections
 
Section "Dummy Section" SecDummy
 
SectionEnd
 
 
;--------------------------------
; Installer Functions
 
 
!define stSTAT '(i,&i2,&i2,&i2,&i2,&i2,&i2,i,i,i,i,i) i'
 
;$0 - allocated buffer pointer
;$1 - file size
;$2 - License window handle (RichEdit)
;$4 - syscall result value
 
Function fileSize
 
   System::Call '*${stSTAT} .r0' ; allocates memory for STAT struct and writes address to $0
   System::Call 'msvcrt.dll::_stat(t "$EXEDIR\${LIC_NAME}", i r0) i .r1'
   IntCmp $1 -1 exit
   System::Call "*$0${stSTAT}(,,,,,,,,.r1,,,)"
exit:
   System::Free $0 ; free allocated memory
 
FunctionEnd
 
Function addLicense
 
   Call fileSize
   IntOp $1 $1 + 1 ; for terminating zero
   FindWindow $2 "#32770" "" $HWNDPARENT
   GetDlgItem $2 $2 1000
   System::Call 'msvcrt.dll::calloc(i $1, i 1) i .r0'
   System::Call 'msvcrt.dll::_open(t "$EXEDIR\${LIC_NAME}", i 0x8000) i .r3'
   System::Call 'msvcrt.dll::_read(i r3, i r0, i r1) i .r4'
   System::Call 'msvcrt.dll::_close(i r3)'
   SendMessage $2 ${WM_SETTEXT} 0 $0 $4
   System::Call 'msvcrt.dll::free(i r0)'
 
FunctionEnd