External License file: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 52: Line 52:


   ClearErrors
   ClearErrors
   System::Call 'kernel32::CreateFile(t "$EXEDIR\${LIC_NAME}", i ${GENERIC_READ}, i ${FILE_SHARE_READ}, i 0, i ${OPEN_EXISTING}, i 0, i 0) i .r0'
   System::Call 'kernel32::CreateFile(t "$EXEDIR\${LIC_NAME}", i ${GENERIC_READ}, i ${FILE_SHARE_READ}, i 0, i  
 
${OPEN_EXISTING}, i 0, i 0) i .r0'
   IfErrors exit
   IfErrors exit
   System::Call 'kernel32::SetFilePointer(i r0, i 0, i 0, i ${FILE_END}) i .r1'
   System::Call 'kernel32::GetFileSize(i r0, i 0) i .r1'
   IntOp $1 $1 + 1 ; for terminating zero
   IntOp $1 $1 + 1 ; for terminating zero
  System::Call 'kernel32::SetFilePointer(i r0, i 0, i 0, i ${FILE_BEGIN})'
   System::Alloc $1
   System::Alloc $1
   Pop $2
   Pop $2

Revision as of 05:59, 7 August 2006

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 FILE_SHARE_READ 1
!define GENERIC_READ 0x80000000
!define OPEN_EXISTING 3
!define FILE_BEGIN 0
!define FILE_END 2
 
Function addLicense
 
   ClearErrors
   System::Call 'kernel32::CreateFile(t "$EXEDIR\${LIC_NAME}", i ${GENERIC_READ}, i ${FILE_SHARE_READ}, i 0, i 
 
${OPEN_EXISTING}, i 0, i 0) i .r0'
   IfErrors exit
   System::Call 'kernel32::GetFileSize(i r0, i 0) i .r1'
   IntOp $1 $1 + 1 ; for terminating zero
   System::Alloc $1
   Pop $2
   System::Call 'kernel32::ReadFile(i r0, i r2, i r1, *i .r3, i 0)'
   System::Call 'kernel32::CloseHandle(i r0)'
   FindWindow $0 "#32770" "" $HWNDPARENT
   GetDlgItem $0 $0 1000
   SendMessage $0 ${WM_SETTEXT} $0 $2
   System::Free $2
exit:
 
FunctionEnd