External License file: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Wikipedia python library)
 
m (Updated author and download links, and changed format of some pages.)
Line 76: Line 76:
</highlight-nsis>
</highlight-nsis>


 
Page author: [[User:Takhir|Takhir]]
Page author: Takhir

Revision as of 12:45, 23 April 2005

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

Page author: Takhir