External License file: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
m (Added category links.)
m (Adding new author and category links.)
Line 1: Line 1:
{|align=right
{{PageAuthor|Takhir}}
|<small>Author: [[{{ns:2}}:Takhir|Takhir]] ([[{{ns:3}}:Takhir|talk]], [[{{ns:-1}}:Contributions/Takhir|contrib]])</small>
 
|}
<br style="clear:both;">
== Description ==
== Description ==
'''Requires:''' [[System]] plug-in.
'''Requires:''' [[System]] plug-in.
Line 80: Line 78:
</highlight-nsis>
</highlight-nsis>


[[{{ns:14}}:User Interface Functions]]
[[Category:User Interface Functions]]

Revision as of 12:10, 24 June 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