Winamp & Shoutcast Forums

Winamp & Shoutcast Forums (http://forums.winamp.com/index.php)
-   NSIS Discussion (http://forums.winamp.com/forumdisplay.php?f=65)
-   -   License / EULA text from external file? (http://forums.winamp.com/showthread.php?t=251549)

MatthewHarmon 20th July 2006 15:29

License / EULA text from external file?
 
Hi all...

Is there a way to have the license/EULA text be taken from the root of my distribution CD instead of baked right into the installer?

I'm using the modern UI, but can modify the macros if need be.

Thanks!

Joel 20th July 2006 15:40

And why not use, in compilation time, that license file?

MatthewHarmon 20th July 2006 15:47

Because my publisher won't let me! They want to be able to make changes to the license without needing to make a new installer.

Anders 20th July 2006 15:50

http://forums.winamp.com/showthread....hreadid=231547

kichik 20th July 2006 16:02

You can use either one of these:

http://nsis.sourceforge.net/External_License_file
http://nsis.sourceforge.net/ExLicensePage_plug-in
http://nsis.sourceforge.net/NonObligatoricPages
http://nsis.sourceforge.net/ExDlg_plug-in
http://nsis.sourceforge.net/CustomLicense_plug-in

MatthewHarmon 20th July 2006 16:13

Thanks... I found that first method and it seems to work for me. Also seems to be the "safest".

Takhir 20th July 2006 18:06

Now I see that code may be shorter and msvcrt free :)
code:

!define FILE_SHARE_READ 1
!define GENERIC_READ 0x80000000
!define OPEN_EXISTING 3
!define FILE_BEGIN 0
!define FILE_END 2

Function addLicense

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::SetFilePointer(i r0, i 0, i 0, i ${FILE_END}) i .r1'
IntOp $1 $1 + 1 ; for terminating zero
System::Call 'kernel32::SetFilePointer(i r0, i 0, i 0, i ${FILE_BEGIN})'
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


MatthewHarmon 21st July 2006 15:42

So, I assume calling the 'kernel32::' routines are "safer" than calling out to the .dll. That is, calling 'kernel32' routines are guaranteed to work?

Takhir 21st July 2006 16:09

No. 'system' plug-in adds .dll for module to load if extension was ommited, and this is not safety question. kernel32.dll calls should work on all systems beginnig Win95. msvcrt.dll appeared in Win95 second edition (?) or with any service pack (or any IE installed), but 100% waranty of msvcrt is beginning Win98 only.

vbguy 24th July 2006 02:44

Takhir, for some reason your code bails out early (it jumps to the exit) which means there is an error when loading the text file. But when I remove the IfErrors line, the file loads fine.

Is there some way to see what error the kernel is throwing? Just for safety reasons if nothing else.

Thanks,

VBGuy

Takhir 24th July 2006 06:07

Looks like error flag was set before function call, just add ClearErrors (Manual 4.9.4.3) as a first function line.


All times are GMT. The time now is 05:00.

Copyright © 1999 - 2010 Nullsoft. All Rights Reserved.