External License file: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Adding new author and category links.)
(spam test)
Line 3: Line 3:
== Description ==
== Description ==
'''Requires:''' [[System]] plug-in.
'''Requires:''' [[System]] plug-in.
[http://zyname.com spam test]


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 10:25, 10 September 2005

Author: Takhir (talk, contrib)


Description

Requires: System plug-in.

spam test

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