Author: Zero3
Date: 2009-01-22 15:13:07 +0000 (Thu, 22 Jan 2009)
New Revision: 25210
Added:
trunk/apps/wininstaller/BuildAll.cmd
trunk/apps/wininstaller/bin/
trunk/apps/wininstaller/compiler/
trunk/apps/wininstaller/compiler/AutoHotkeySC_Normal.bin
trunk/apps/wininstaller/compiler/AutoHotkeySC_VistaElevated.bin
trunk/apps/wininstaller/src_freenethelpers/
trunk/apps/wininstaller/src_freenethelpers/FreenetLauncher.ahk
trunk/apps/wininstaller/src_freenethelpers/FreenetStart.ahk
trunk/apps/wininstaller/src_freenethelpers/FreenetStop.ahk
trunk/apps/wininstaller/src_freenetinstaller/
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller.ahk
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Header.png
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Icon.ico
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_FileInstalls.inc
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_Helpers.inc
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_Info.inc
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Uninstaller.ahk
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/Ntrights.exe
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/RemProf.exe
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/jre-online-installer.exe
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/netuser.exe
trunk/apps/wininstaller/src_freenetinstaller/files_install/
trunk/apps/wininstaller/src_freenetinstaller/files_install/LICENSE.Freenet
trunk/apps/wininstaller/src_freenetinstaller/files_install/LICENSE.Mantissa
trunk/apps/wininstaller/src_freenetinstaller/files_install/bin/
trunk/apps/wininstaller/src_freenetinstaller/files_install/bin/wrapper-windows-x86-32.exe
trunk/apps/wininstaller/src_freenetinstaller/files_install/freenet.ico
trunk/apps/wininstaller/src_freenetinstaller/files_install/lib/
trunk/apps/wininstaller/src_freenetinstaller/files_install/lib/wrapper-windows-x86-32.dll
trunk/apps/wininstaller/src_freenetinstaller/files_install/plugins/
trunk/apps/wininstaller/src_freenetinstaller/files_install/seednodes.fref
trunk/apps/wininstaller/src_freenetinstaller/files_install/startssl.pem
trunk/apps/wininstaller/src_freenetinstaller/files_install/wrapper.conf
Log:
Initial commit of native Windows installer
Added: trunk/apps/wininstaller/BuildAll.cmd
===================================================================
--- trunk/apps/wininstaller/BuildAll.cmd (rev 0)
+++ trunk/apps/wininstaller/BuildAll.cmd 2009-01-22 15:13:07 UTC (rev
25210)
@@ -0,0 +1,66 @@
+ at echo off
+::
+:: Not-committed requirements:
+:: - bin\freenet.jar
+:: - bin\freenet-ext.jar
+:: - bin\Ahk2Exe.exe (AutoHotKey compiler)
+:: - bin\upx.exe (UPX packer, comes with AutoHotKey compiler)
+:: - bin\JSTUN.jar
+:: - bin\KeyExplorer.jar
+:: - bin\ThawIndexBrowser.jar
+:: - bin\UPnP.jar
+:: - bin\XMLLibrarian.jar
+::
+
+::
+:: Cleanup and prepare
+::
+if exist bin\FreenetInstaller.exe del bin\FreenetInstaller.exe /Q
+copy bin\freenet.jar src_freenetinstaller\files_install\freenet.jar
+copy bin\freenet-ext.jar src_freenetinstaller\files_install\freenet-ext.jar
+copy bin\Ahk2Exe.exe compiler\Ahk2Exe.exe
+copy bin\upx.exe compiler\upx.exe
+copy bin\JSTUN.jar src_freenetinstaller\files_install\plugins\JSTUN.jar
+copy bin\KeyExplorer.jar
src_freenetinstaller\files_install\plugins\KeyExplorer.jar
+copy bin\ThawIndexBrowser.jar
src_freenetinstaller\files_install\plugins\ThawIndexBrowser.jar
+copy bin\UPnP.jar src_freenetinstaller\files_install\plugins\UPnP.jar
+copy bin\XMLLibrarian.jar
src_freenetinstaller\files_install\plugins\XMLLibrarian.jar
+
+::
+:: Compile non-Vista-elevated executables
+::
+copy compiler\AutoHotkeySC_Normal.bin compiler\AutoHotkeySC.bin
+
+compiler\Ahk2Exe.exe /in "src_freenethelpers\FreenetLauncher.ahk" /out
"src_freenetinstaller\files_install\freenetlauncher.exe"
+
+del compiler\AutoHotkeySC.bin
+
+::
+:: Compile Vista-elevated executables
+::
+copy compiler\AutoHotkeySC_VistaElevated.bin compiler\AutoHotkeySC.bin
+
+compiler\Ahk2Exe.exe /in
"src_freenetinstaller\FreenetInstaller_Uninstaller.ahk" /out
"src_freenetinstaller\files_install\bin\freenetuninstaller.exe"
+compiler\Ahk2Exe.exe /in "src_freenethelpers\FreenetStart.ahk" /out
"src_freenetinstaller\files_install\bin\start.exe"
+compiler\Ahk2Exe.exe /in "src_freenethelpers\FreenetStop.ahk" /out
"src_freenetinstaller\files_install\bin\stop.exe"
+
+compiler\Ahk2Exe.exe /in "src_freenetinstaller\FreenetInstaller.ahk" /out
"bin\FreenetInstaller.exe"
+
+del compiler\AutoHotkeySC.bin
+
+::
+:: Cleanup
+::
+del compiler\Ahk2Exe.exe
+del compiler\upx.exe
+del src_freenetinstaller\files_install\freenet.jar
+del src_freenetinstaller\files_install\freenet-ext.jar
+del src_freenetinstaller\files_install\freenetlauncher.exe
+del src_freenetinstaller\files_install\bin\start.exe
+del src_freenetinstaller\files_install\bin\stop.exe
+del src_freenetinstaller\files_install\bin\freenetuninstaller.exe
+del src_freenetinstaller\files_install\plugins\JSTUN.jar
+del src_freenetinstaller\files_install\plugins\KeyExplorer.jar
+del src_freenetinstaller\files_install\plugins\ThawIndexBrowser.jar
+del src_freenetinstaller\files_install\plugins\UPnP.jar
+del src_freenetinstaller\files_install\plugins\XMLLibrarian.jar
Added: trunk/apps/wininstaller/compiler/AutoHotkeySC_Normal.bin
===================================================================
(Binary files differ)
Property changes on: trunk/apps/wininstaller/compiler/AutoHotkeySC_Normal.bin
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/apps/wininstaller/compiler/AutoHotkeySC_VistaElevated.bin
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/compiler/AutoHotkeySC_VistaElevated.bin
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/apps/wininstaller/src_freenethelpers/FreenetLauncher.ahk
===================================================================
--- trunk/apps/wininstaller/src_freenethelpers/FreenetLauncher.ahk
(rev 0)
+++ trunk/apps/wininstaller/src_freenethelpers/FreenetLauncher.ahk
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,169 @@
+;
+; Windows Freenet Launcher by Zero3 (zero3 that-a-thingy zero3 that-dot-thingy
dk) - http://freenetproject.org/
+;
+; This launcher does the following:
+; - Checks if service is running, and starts it if not (via bin\start.exe)
+; - Compiles the fproxy URL by reading fproxy port information from freenet.ini
+; - Finds the best browser available and launches fproxy in it (throws error
if none found)
+;
+; Extra credits:
+; - Service state function: heresy
(http://www.autohotkey.com/forum/topic34984.html)
+;
+
+;
+; Don't-touch-unless-you-know-what-you-are-doing settings
+;
+#NoEnv ; Recommended
for performance and compatibility with future AutoHotkey releases
+#NoTrayIcon ; We won't need
this...
+#SingleInstance ignore ; Only
allow one instance at any given time
+
+SendMode, Input ;
Recommended for new scripts due to its superior speed and reliability
+StringCaseSense, Off ; Treat A-Z as
equal to a-z when comparing strings. Useful when dealing with folders, as
Windows treat them as equals.
+
+SetWorkingDir, %A_ScriptDir% ; Look for
other files relative to our own location
+
+;
+; Customizable settings
+;
+_ServiceTimeout := 20 ; Maximum
number of seconds we wait before "timing out" and throwing an error when
managing the system service
+
+;
+; Check if node is running
+;
+IfNotExist, installid.dat
+{
+ PopupErrorMessage("Freenet Launcher was unable to find the
installid.dat ID file.`n`nMake sure that you are running Freenet Launcher from
a Freenet installation directory.`nIf you are already doing so, please report
this error message to the developers.")
+ ExitApp, 1
+}
+IfNotExist, freenet.ini
+{
+ PopupErrorMessage("Freenet Launcher was unable to find the freenet.ini
configuration file.`n`nMake sure that you are running Freenet Launcher from a
Freenet installation directory.`nIf you are already doing so, please report
this error message to the developers.")
+ ExitApp, 1
+}
+IfNotExist, bin\start.exe
+{
+ PopupErrorMessage("Freenet Launcher was unable to find the
bin\start.exe launcher.`n`nPlease reinstall Freenet.`n`nIf the problem keeps
occurring, please report this error message to the developers.")
+ ExitApp, 1
+}
+
+FileReadLine, _InstallSuffix, installid.dat, 1
+
+Loop
+{
+ _ServiceState := Service_State("freenet" . _InstallSuffix)
+
+ If (A_Index > _ServiceTimeout)
+ {
+ PopupErrorMessage("Freenet Launcher was unable to control the
Freenet system service as it appears to be stuck.`n`nPlease reinstall
Freenet.`n`nIf the problem keeps occurring, please report this error message to
the developers.")
+ ExitApp, 1
+ }
+ Else If (_ServiceState == -1 || _ServiceState == -4)
+ {
+ PopupErrorMessage("Freenet Launcher was unable to find and
control the Freenet system service.`n`nPlease reinstall Freenet.`n`nIf the
problem keeps occurring, please report this error message to the developers.")
+ ExitApp, 1
+ }
+ Else If (_ServiceState == 2 || _ServiceState == 3 || _ServiceState == 5
|| _ServiceState == 6)
+ {
+ Sleep, 1000
+ Continue
+ }
+ Else If (_ServiceState == 1 || _ServiceState == 7)
+ {
+ RunWait, bin\start.exe, , UseErrorLevel
+ Sleep, 1000
+ Continue
+ }
+ Else
+ {
+ Break ; Service must
be running then!
+ }
+}
+
+;
+; Compile fproxy URL
+;
+FileRead, _INI, freenet.ini
+If (RegExMatch(_INI, "i)fproxy.port=([0-9]{1,5})", _Port) == 0 || !_Port1)
+{
+ PopupErrorMessage("Freenet Launcher was unable to read the
'fproxy.port' value from the freenet.ini configuration file.`n`nPlease
reinstall Freenet.`n`nIf the problem keeps occurring, please report this error
message to the developers.")
+ ExitApp, 1
+}
+
+_URL = http://127.0.0.1:%_Port1%/
+
+;
+; Try browser: FireFox
+;
+RegRead, _FFVersion, HKEY_LOCAL_MACHINE, SOFTWARE\Mozilla\Mozilla Firefox,
CurrentVersion
+
+If (!ErrorLevel && _FFVersion <> "")
+{
+ RegRead, _FFPath, HKEY_LOCAL_MACHINE, SOFTWARE\Mozilla\Mozilla
Firefox\%_FFVersion%\Main, PathToExe
+
+ If (!ErrorLevel && _FFPath <> "" && FileExist(_FFPath))
+ {
+ Run, %_FFPath% "%_URL%", , UseErrorLevel
+ ExitApp, 0
+ }
+}
+
+;
+; Try browser: Internet Explorer
+;
+IfExist, %A_ProgramFiles%\Internet Explorer\iexplore.exe
+{
+ Run, %A_ProgramFiles%\Internet Explorer\iexplore.exe "%_URL%", ,
UseErrorLevel
+ ExitApp, 0
+}
+
+;
+; No usable browser found
+;
+PopupErrorMessage("Freenet Launcher was unable to find a supported
browser.`n`nPlease install one of the supported browsers, or manually`nnavigate
to the URL inside freenet.url.dat.`n`nFreenet Launcher supports the following
browsers:`n- Mozilla FireFox`n- Internet Explorer (not recommended)")
+ExitApp, 1
+
+;
+; Helper functions
+;
+PopupErrorMessage(_ErrorMessage)
+{
+ MsgBox, 16, Freenet Launcher error, %_ErrorMessage% ; 16 = Icon
Hand (stop/error)
+}
+
+Service_State(ServiceName)
+{
+ ; Return Values:
+ ; -4: Service not found
+ ; -1: Service could not be queried
+ ; 1: SERVICE_STOPPED (The service is not running)
+ ; 2: SERVICE_START_PENDING (The service is starting)
+ ; 3: SERVICE_STOP_PENDING (The service is stopping)
+ ; 4: SERVICE_RUNNING (The service is running)
+ ; 5: SERVICE_CONTINUE_PENDING (The service continue is pending)
+ ; 6: SERVICE_PAUSE_PENDING (The service pause is pending)
+ ; 7: SERVICE_PAUSED (The service is paused)
+
+ SCM_HANDLE := DllCall("advapi32\OpenSCManagerA"
+ , "Int", 0 ;NULL for local
+ , "Int", 0
+ , "UInt", 0x1) ;SC_MANAGER_CONNECT (0x0001)
+
+ if !(SC_HANDLE := DllCall("advapi32\OpenServiceA"
+ , "UInt", SCM_HANDLE
+ , "Str", ServiceName
+ , "UInt", 0x4)) ;SERVICE_QUERY_STATUS (0x0004)
+ result := -4 ;Service Not Found
+
+ VarSetCapacity(SC_STATUS, 28, 0) ;SERVICE_STATUS Struct
+
+ if !result
+ result := !DllCall("advapi32\QueryServiceStatus"
+ , "UInt", SC_HANDLE
+ , "UInt", &SC_STATUS)
+ ? False : NumGet(SC_STATUS, 4) ;-1 or dwCurrentState
+
+ DllCall("advapi32\CloseServiceHandle", "UInt", SC_HANDLE)
+ DllCall("advapi32\CloseServiceHandle", "UInt", SCM_HANDLE)
+
+ return result
+}
Added: trunk/apps/wininstaller/src_freenethelpers/FreenetStart.ahk
===================================================================
--- trunk/apps/wininstaller/src_freenethelpers/FreenetStart.ahk
(rev 0)
+++ trunk/apps/wininstaller/src_freenethelpers/FreenetStart.ahk 2009-01-22
15:13:07 UTC (rev 25210)
@@ -0,0 +1,158 @@
+;
+; Windows Freenet start script by Zero3 (zero3 that-a-thingy zero3
that-dot-thingy dk) - http://freenetproject.org/
+;
+; Extra credits:
+; - Service state function: heresy
(http://www.autohotkey.com/forum/topic34984.html)
+;
+
+;
+; Don't-touch-unless-you-know-what-you-are-doing settings
+;
+#NoEnv ; Recommended
for performance and compatibility with future AutoHotkey releases
+#NoTrayIcon ; We won't need
this...
+#SingleInstance ignore ; Only
allow one instance at any given time
+
+SendMode, Input ;
Recommended for new scripts due to its superior speed and reliability
+StringCaseSense, Off ; Treat A-Z as
equal to a-z when comparing strings. Useful when dealing with folders, as
Windows treat them as equals.
+
+_WorkingDir := RegExReplace(A_ScriptDir, "i)\\bin$", "") ; If we are
located in the \bin folder, go back a step
+SetWorkingDir, %_WorkingDir% ; Look for
other files relative to install root
+
+;
+; Customizable settings
+;
+_ServiceTimeout := 20 ; Maximum
number of seconds we wait before "timing out" and throwing an error when
managing the system service
+
+;
+; Check for administrator privileges.
+;
+If not (A_IsAdmin)
+{
+ PopupErrorMessage("Freenet start script requires administrator
privileges to start the Freenet service.`nPlease make sure that your user
account has administrative access to the system,`nand the start script is
executed with access to use these privileges.")
+ ExitApp, 1
+}
+
+;
+; Check node status
+;
+IfNotExist, installid.dat
+{
+ PopupErrorMessage("Freenet start script was unable to find the
installid.dat ID file.`n`nMake sure that you are running Freenet start script
from the 'bin' folder of a Freenet installation directory.`nIf you are already
doing so, please report this error message to the developers.")
+ ExitApp, 1
+}
+
+FileReadLine, _InstallSuffix, installid.dat, 1
+_ServiceName = freenet%_InstallSuffix%
+
+Loop
+{
+ _ServiceState := Service_State(_ServiceName)
+
+ If (A_Index > _ServiceTimeout)
+ {
+ PopupErrorMessage("Freenet start script was unable to control
the Freenet system service as it appears to be stuck.`n`nPlease reinstall
Freenet.`n`nIf the problem keeps occurring, please report this error message to
the developers.")
+ ExitApp, 1
+ }
+ Else If (_ServiceState == -1 || _ServiceState == -4)
+ {
+ PopupErrorMessage("Freenet start script was unable to find and
control the Freenet system service.`n`nPlease reinstall Freenet.`n`nIf the
problem keeps occurring, please report this error message to the developers.")
+ ExitApp, 1
+ }
+ Else If (_ServiceState == 2 || _ServiceState == 3 || _ServiceState == 5
|| _ServiceState == 6)
+ {
+ Sleep, 1000
+ Continue
+ }
+ Else If (_ServiceState == 1 || _ServiceState == 7)
+ {
+ _ReturnCode := Service_Start(_ServiceName)
+ If (_ReturnCode <> 1)
+ {
+ PopupErrorMessage("Freenet start script was unable to
start the Freenet system service.`n`nPlease reinstall Freenet.`n`nIf the
problem keeps occurring, please report this error message to the developers.")
+ ExitApp, 1
+ }
+ Else
+ {
+ ExitApp, 0
+ }
+ }
+ Else
+ {
+ ExitApp, 2 ; Service must
be running then!
+ }
+}
+
+;
+; Helper functions
+;
+PopupErrorMessage(_ErrorMessage)
+{
+ MsgBox, 16, Freenet start script error, %_ErrorMessage% ; 16 = Icon
Hand (stop/error)
+}
+
+Service_State(ServiceName)
+{
+ ; Return Values:
+ ; -4: Service not found
+ ; -1: Service could not be queried
+ ; 1: SERVICE_STOPPED (The service is not running)
+ ; 2: SERVICE_START_PENDING (The service is starting)
+ ; 3: SERVICE_STOP_PENDING (The service is stopping)
+ ; 4: SERVICE_RUNNING (The service is running)
+ ; 5: SERVICE_CONTINUE_PENDING (The service continue is pending)
+ ; 6: SERVICE_PAUSE_PENDING (The service pause is pending)
+ ; 7: SERVICE_PAUSED (The service is paused)
+
+ SCM_HANDLE := DllCall("advapi32\OpenSCManagerA"
+ , "Int", 0 ;NULL for local
+ , "Int", 0
+ , "UInt", 0x1) ;SC_MANAGER_CONNECT (0x0001)
+
+ if !(SC_HANDLE := DllCall("advapi32\OpenServiceA"
+ , "UInt", SCM_HANDLE
+ , "Str", ServiceName
+ , "UInt", 0x4)) ;SERVICE_QUERY_STATUS (0x0004)
+ result := -4 ;Service Not Found
+
+ VarSetCapacity(SC_STATUS, 28, 0) ;SERVICE_STATUS Struct
+
+ if !result
+ result := !DllCall("advapi32\QueryServiceStatus"
+ , "UInt", SC_HANDLE
+ , "UInt", &SC_STATUS)
+ ? False : NumGet(SC_STATUS, 4) ;-1 or dwCurrentState
+
+ DllCall("advapi32\CloseServiceHandle", "UInt", SC_HANDLE)
+ DllCall("advapi32\CloseServiceHandle", "UInt", SCM_HANDLE)
+
+ return result
+}
+
+Service_Start(ServiceName)
+{
+ ; Return values:
+ ; 0: error
+ ; 1: success
+
+ SCM_HANDLE := DllCall("advapi32\OpenSCManagerA"
+ , "Int", 0 ;NULL for local
+ , "Int", 0
+ , "UInt", 0x1) ;SC_MANAGER_CONNECT (0x0001)
+
+ if !(SC_HANDLE := DllCall("advapi32\OpenServiceA"
+ , "UInt", SCM_HANDLE
+ , "Str", ServiceName
+ , "UInt", 0x10)) ;SERVICE_START (0x0010)
+ result := -4 ;Service Not Found
+
+ if !result
+ result := DllCall("advapi32\StartServiceA"
+ , "UInt", SC_HANDLE
+ , "Int", 0
+ , "Int", 0)
+
+ DllCall("advapi32\CloseServiceHandle", "UInt", SC_HANDLE)
+ DllCall("advapi32\CloseServiceHandle", "UInt", SCM_HANDLE)
+
+ return result
+}
Added: trunk/apps/wininstaller/src_freenethelpers/FreenetStop.ahk
===================================================================
--- trunk/apps/wininstaller/src_freenethelpers/FreenetStop.ahk
(rev 0)
+++ trunk/apps/wininstaller/src_freenethelpers/FreenetStop.ahk 2009-01-22
15:13:07 UTC (rev 25210)
@@ -0,0 +1,159 @@
+;
+; Windows Freenet stop script by Zero3 (zero3 that-a-thingy zero3
that-dot-thingy dk) - http://freenetproject.org/
+;
+; Extra credits:
+; - Service state function: heresy
(http://www.autohotkey.com/forum/topic34984.html)
+;
+
+;
+; Don't-touch-unless-you-know-what-you-are-doing settings
+;
+#NoEnv ; Recommended
for performance and compatibility with future AutoHotkey releases
+#NoTrayIcon ; We won't need
this...
+#SingleInstance ignore ; Only
allow one instance at any given time
+
+SendMode, Input ;
Recommended for new scripts due to its superior speed and reliability
+StringCaseSense, Off ; Treat A-Z as
equal to a-z when comparing strings. Useful when dealing with folders, as
Windows treat them as equals.
+
+_WorkingDir := RegExReplace(A_ScriptDir, "i)\\bin$", "") ; If we are
located in the \bin folder, go back a step
+SetWorkingDir, %_WorkingDir% ; Look for
other files relative to install root
+
+;
+; Customizable settings
+;
+_ServiceTimeout := 20 ; Maximum
number of seconds we wait before "timing out" and throwing an error when
managing the system service
+
+;
+; Check for administrator privileges.
+;
+If not (A_IsAdmin)
+{
+ PopupErrorMessage("Freenet stop script requires administrator
privileges to start the Freenet service.`nPlease make sure that your user
account has administrative access to the system,`nand the stop script is
executed with access to use these privileges.")
+ ExitApp, 1
+}
+
+;
+; Check node status
+;
+IfNotExist, installid.dat
+{
+ PopupErrorMessage("Freenet stop script was unable to find the
installid.dat ID file.`n`nMake sure that you are running Freenet stop script
from the 'bin' folder of a Freenet installation directory.`nIf you are already
doing so, please report this error message to the developers.")
+ ExitApp, 1
+}
+
+FileReadLine, _InstallSuffix, installid.dat, 1
+_ServiceName = freenet%_InstallSuffix%
+
+Loop
+{
+ _ServiceState := Service_State(_ServiceName)
+
+ If (A_Index > _ServiceTimeout)
+ {
+ PopupErrorMessage("Freenet stop script was unable to control
the Freenet system service as it appears to be stuck.`n`nPlease reinstall
Freenet.`n`nIf the problem keeps occurring, please report this error message to
the developers.")
+ ExitApp, 1
+ }
+ Else If (_ServiceState == -1 || _ServiceState == -4)
+ {
+ PopupErrorMessage("Freenet stop script was unable to find and
control the Freenet system service.`n`nPlease reinstall Freenet.`n`nIf the
problem keeps occurring, please report this error message to the developers.")
+ ExitApp, 1
+ }
+ Else If (_ServiceState == 2 || _ServiceState == 3 || _ServiceState == 5
|| _ServiceState == 6)
+ {
+ Sleep, 1000
+ Continue
+ }
+ Else If (_ServiceState == 1)
+ {
+
+ ExitApp, 2 ;
Service must be stopped then!
+ }
+ Else
+ {
+ _ReturnCode := Service_Stop(_ServiceName)
+ If (_ReturnCode <> 1)
+ {
+ PopupErrorMessage("Freenet stop script was unable to
stop the Freenet system service.`n`nPlease reinstall Freenet.`n`nIf the problem
keeps occurring, please report this error message to the developers.")
+ ExitApp, 1
+ }
+ Else
+ {
+ ExitApp, 0
+ }
+ }
+}
+
+;
+; Helper functions
+;
+PopupErrorMessage(_ErrorMessage)
+{
+ MsgBox, 16, Freenet stop script error, %_ErrorMessage% ; 16 = Icon
Hand (stop/error)
+}
+
+Service_State(ServiceName)
+{
+ ; Return Values:
+ ; -4: Service not found
+ ; -1: Service could not be queried
+ ; 1: SERVICE_STOPPED (The service is not running)
+ ; 2: SERVICE_START_PENDING (The service is starting)
+ ; 3: SERVICE_STOP_PENDING (The service is stopping)
+ ; 4: SERVICE_RUNNING (The service is running)
+ ; 5: SERVICE_CONTINUE_PENDING (The service continue is pending)
+ ; 6: SERVICE_PAUSE_PENDING (The service pause is pending)
+ ; 7: SERVICE_PAUSED (The service is paused)
+
+ SCM_HANDLE := DllCall("advapi32\OpenSCManagerA"
+ , "Int", 0 ;NULL for local
+ , "Int", 0
+ , "UInt", 0x1) ;SC_MANAGER_CONNECT (0x0001)
+
+ if !(SC_HANDLE := DllCall("advapi32\OpenServiceA"
+ , "UInt", SCM_HANDLE
+ , "Str", ServiceName
+ , "UInt", 0x4)) ;SERVICE_QUERY_STATUS (0x0004)
+ result := -4 ;Service Not Found
+
+ VarSetCapacity(SC_STATUS, 28, 0) ;SERVICE_STATUS Struct
+
+ if !result
+ result := !DllCall("advapi32\QueryServiceStatus"
+ , "UInt", SC_HANDLE
+ , "UInt", &SC_STATUS)
+ ? False : NumGet(SC_STATUS, 4) ;-1 or dwCurrentState
+
+ DllCall("advapi32\CloseServiceHandle", "UInt", SC_HANDLE)
+ DllCall("advapi32\CloseServiceHandle", "UInt", SCM_HANDLE)
+
+ return result
+}
+
+Service_Stop(ServiceName)
+{
+ ; Return values:
+ ; 0: error
+ ; 1: success
+
+ SCM_HANDLE := DllCall("advapi32\OpenSCManagerA"
+ , "Int", 0 ;NULL for local
+ , "Int", 0
+ , "UInt", 0x1) ;SC_MANAGER_CONNECT (0x0001)
+
+ if !(SC_HANDLE := DllCall("advapi32\OpenServiceA"
+ , "UInt", SCM_HANDLE
+ , "Str", ServiceName
+ , "UInt", 0x20)) ;SERVICE_STOP (0x0020)
+ result := -4 ;Service Not Found
+
+ if !result
+ result := DllCall("advapi32\ControlService"
+ , "UInt", SC_HANDLE
+ , "Int", 1
+ , "Str", "")
+
+ DllCall("advapi32\CloseServiceHandle", "UInt", SC_HANDLE)
+ DllCall("advapi32\CloseServiceHandle", "UInt", SCM_HANDLE)
+
+ return result
+}
Added: trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller.ahk
===================================================================
--- trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller.ahk
(rev 0)
+++ trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller.ahk
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,393 @@
+;
+; Windows Freenet Installer by Zero3 (zero3 that-a-thingy zero3
that-dot-thingy dk) - http://freenetproject.org/
+;
+
+;
+; Don't-touch-unless-you-know-what-you-are-doing settings
+;
+#NoEnv ; Recommended
for performance and compatibility with future AutoHotkey releases
+#NoTrayIcon ; We won't need
this...
+#SingleInstance ignore ; Only
allow one instance of at any given time (theoretically, if we allowed multiple,
we could run into some temp files problems)
+#Include FreenetInstaller_Include_Info.inc ; Include
version and build info (which should be updated by the compiler bot before
compiling this installer)
+
+SendMode, Input ;
Recommended for new scripts due to its superior speed and reliability
+SetFormat, FLOAT, 0.0 ; Remove
trailing zeroes on floats. We won't need the precision and it looks stupid with
numbers printed with 27 trailing zeroes
+StringCaseSense, Off ; Treat A-Z as
equal to a-z when comparing strings. Useful when dealing with folders, as
Windows treat them as equals.
+_FontSize := 9 ; Our font
size. Changing this *might* mess up some of the margin calculations! See
comment for _TextHeight calculation below as well.
+Gui, +OwnDialogs ; Make
messageboxes "stick" to the main GUI
+
+;
+; Customizable settings
+;
+_GuiWidth := 450+10+10 ; Main GUI
width. Should be the same size as the header image + default element margins
(used for the GUI window itself)
+_StandardMargin := 12 ; Our standard
margin. Must be at least 8 px.
+_ButtonWidth := 100 ; Width of our
buttons
+
+_RequiredJRE := 1.5 ; Java version
required by Freenet. If not found, user will be asked to upgrade/install via
the bundled online installer
+_UsedFreeSpace := _Inc_InstallSize+256 ; What we
actually need. Installation size + default datastore size
+_RequiredFreeSpace := _UsedFreeSpace+512 ; In MB, how
much free space do we require to install? What we actually use + enough free
space for Windows to continue operating (in case install dir is on system
drive... and to not block the drive in general)
+_InternalPathLength := 75 ; Length of
longest path within the Freenet installation. Installation will refuse to
continue if install path + this number exceeds 255 (FAT32 and NTFS limit)
+
+_DefaultInstallDir = %A_ProgramFiles%\Freenet ; Default
installation directory
+_DefaultInstallStartMenuShortcuts := 1 ; Install start
menu shortcut(s) by default?
+_DefaultInstallDesktopShortcuts := 1 ; Install
desktop shorctu(s) by default?
+_DefaultBrowseAfterInstall := 1 ;
Browse Freenet after installation by default?
+
+;
+; General init stuff
+;
+FileRemoveDir, %A_Temp%\FreenetInstaller, 1
; Remove any old temp dir
+FileCreateDir, %A_Temp%\FreenetInstaller
; Create a new temp dir
+If (ErrorLevel)
+{
+ MsgBox, 16, Freenet Installer fatal error, Freenet Installer was not
able to unpack necessary installation files
to:`n`n%A_Temp%\FreenetInstaller`n`nPlease make sure that Freenet Installer has
full access to the system's temporary files folder. ; 16 = Icon Hand
(stop/error)
+ ExitApp
+}
+SetWorkingDir, %A_Temp%\FreenetInstaller
; Switch to our new temp dir as working dir. *NO*
FileInstall lines before this!
+
+FileInstall, FreenetInstaller_Icon.ico,
%A_WorkingDir%\FreenetInstaller_Icon.ico ; Unpack our
small icon
+Menu, Tray, Icon, FreenetInstaller_Icon.ico
; Set tray and GUI icon to our icon. Must be done
before any Gui command to work
+
+Gui, Font, s%_FontSize%, MS sans serif
; As default font may vary (and thereby mess up custom
positioning and layout), we should force a specific
+
+_StandardMargin2 := _StandardMargin-8
+Gui, Margin, , %_StandardMargin2% ; 0=8px (which
is minimum?). (A margin of 2px seems to be used outside groupboxes. Need to
figure out why that is.)
+
+_TextHeight := 2+_FontSize+2 ; 9px has 2px
built-in margin on top on bottom, making a normal line 13px high (except
groupbox header text on classic theme, which seem to have 3px on top and 1px on
bottom)
+_GuiWidth2 := _GuiWidth-10-10 ; GuiWidth -
element left margin - element right margin (used for main elements such as
header image, groupboxes and headlines)
+_GBTopMargin := _TextHeight+(_StandardMargin/2) ;
Pixels from y coordinate of start of groupbox whereafter content should begin
+_GBBottomMargin := 2+(_StandardMargin/2) ; Bottom margin
inside a groupbox
+_VSpacingFromGBBottom := _GBBottomMargin+_StandardMargin ; Used when
extra vertical spacing after a groupbox is wanted
+_GBHorMargin := 2+_StandardMargin ; Horizontal
margin for text within a groupbox (2px groupbox border + our standard margin)
+_GuiWidth3 := _GuiWidth2-_GBHorMargin-_GBHorMargin ; GuiWidth2 -
groupbox left margin - groupbox right margin (used for groupbox elements)
+_MixLineTextPush := (24/2)-(_TextHeight/2) ; Used for
vertically centering text on the same lines as one or more buttons.
(Buttonheight/2)-(Textheight/2)
+
+;
+; Check for administrator privileges.
+;
+If not (A_IsAdmin)
+{
+ MsgBox, 16, Freenet Installer fatal error, Freenet Installer requires
administrator privileges to install Freenet.`nPlease make sure that your user
account has administrative access to the system,`nand Freenet Installer is
executed with access to use these privileges. ; 16 = Icon Hand (stop/error)
+ Exit()
+}
+
+;
+; Main GUI starts here!
+;
+GuiStart:
; Label to jump back to if we want to start over
+
+;
+; Image: Header logo
+;
+FileInstall, FreenetInstaller_Header.png,
%A_WorkingDir%\FreenetInstaller_Header.png
+Gui, Add, Picture, Section, FreenetInstaller_Header.png
+
+;
+; Welcome text
+;
+Gui, Font, bold
+Gui, Add, Text, xs W%_GuiWidth2% Center Section, `nWelcome to the Freenet
Installer!`n
+Gui, Font, norm
+
+;
+; Check for unsupported Windows version
+;
+If A_OSVersion not in WIN_2000,WIN_XP,WIN_2003,WIN_VISTA
+{
+ ;
+ ; Groupbox: Installation problem (OS requirement not met)
+ ;
+ _GBHeight := CalculateGroupBoxHeight(8,0,0,0)
; (_GBTextLines, _GBButtonLines, _GBCheckBoxLines,
_GBSpacings) (Number of text lines, number of button lines, number of checkbox
lines, number of spacings)
+ Gui, Add, GroupBox, xs w%_GuiWidth2% h%_GBHeight% Section, Installation
problem
+
+ Gui, Add, Text, W%_GuiWidth3% xs+%_GBHorMargin% ys+%_GBTopMargin%,
Freenet only supports the following versions of the Windows operating
system:`n`n- Windows 2000`n- Windows XP`n- Windows Server 2003`n- Windows
Vista`n`nPlease install one of these versions if you want to use Freenet on
Windows.
+
+ ;
+ ; Exit button
+ ;
+ _Buttonx := (_GuiWidth2/2)-(_ButtonWidth/2)
; Center our button
+ Gui, Add, Button, Default xs%_Buttonx% W%_ButtonWidth%, E&xit
; Label "Exit" is triggered upon activation
+
+ Gui, Show, W%_GuiWidth%, Freenet Installer
+ return
+}
+
+;
+; Check for missing/old version of JRE
+;
+If (!CheckJavaVersion())
+{
+ ;
+ ; Groupbox: Installation problem (Java requirement not met)
+ ;
+ _GBHeight := CalculateGroupBoxHeight(4,1,0,2)
; (_GBTextLines, _GBButtonLines, _GBCheckBoxLines,
_GBSpacings) (Number of text lines, number of button lines, number of checkbox
lines, number of spacings)
+ Gui, Add, GroupBox, xs w%_GuiWidth2% h%_GBHeight% Section, Installation
problem
+
+ Gui, Add, Text, W%_GuiWidth3% xs+%_GBHorMargin% ys+%_GBTopMargin%,
Freenet requires the Java Runtime Environment, but your system does not appear
to have an up-to-date version installed. You can install Java by using the
included online installer, which will download and install the necessary files
from the Java website automatically:
+
+ _Buttonx := (_GuiWidth2/2)-(_ButtonWidth/2)
; Center our button
+ Gui, Add, Button, xs%_Buttonx% y+%_StandardMargin% W%_ButtonWidth%
v_cInstallJavaButton, Install Java
+
+ Gui, Add, Text, xs+%_GBHorMargin% y+%_StandardMargin% W%_GuiWidth3%,
The installation will continue once Java version %_RequiredJRE% or later has
been installed.
+
+ ;
+ ; Exit button
+ ;
+ _Buttonx := (_GuiWidth2/2)-(_ButtonWidth/2)
; Center our button
+ Gui, Add, Button, Default xs%_Buttonx% W%_ButtonWidth%, E&xit
+
+ Gui, Show, W%_GuiWidth%, Freenet Installer
+ SetTimer, RecheckJavaVersionTimer, 5000
+ return
+}
+
+;
+; Check for old uninstaller
+;
+If (CheckForOldUninstaller())
+{
+ ;
+ ; Groupbox: Installation problem (Old uninstaller detected)
+ ;
+ _GBHeight := CalculateGroupBoxHeight(4,1,0,2)
; (_GBTextLines, _GBButtonLines, _GBCheckBoxLines,
_GBSpacings) (Number of text lines, number of button lines, number of checkbox
lines, number of spacings)
+ Gui, Add, GroupBox, xs w%_GuiWidth2% h%_GBHeight% Section, Installation
problem
+
+ Gui, Add, Text, W%_GuiWidth3% xs+%_GBHorMargin% ys+%_GBTopMargin%,
Freenet Installer has detected that you already have Freenet installed. Your
current installation was installed using an older, unsupported installer. To
continue, you must first uninstall your current version of Freenet using the
previously created uninstaller:
+
+ _Buttonx := (_GuiWidth2/2)-(_ButtonWidth/2)
; Center our button
+ Gui, Add, Button, xs+%_Buttonx% y+%_StandardMargin% W%_ButtonWidth%
v_cUninstallButton, &Uninstall
+
+ Gui, Add, Text, xs+%_GBHorMargin% y+%_StandardMargin% W%_GuiWidth3%,
The installation will continue once the old installation has been removed.
+
+ ;
+ ; Exit button
+ ;
+ _Buttonx := (_GuiWidth2/2)-(_ButtonWidth/2)
; Center our button
+ Gui, Add, Button, Default xs%_Buttonx% W%_ButtonWidth%, E&xit
+
+ Gui, Show, W%_GuiWidth%, Freenet Installer
+ SetTimer, RecheckOldUninstallerTimer, 5000
+ return
+}
+
+;
+; Text: Install guideline header
+;
+Gui, Add, Text, xs W%_GuiWidth2% Section, Please check the following default
settings before continuing with the installation of your node.
+
+;
+; Groupbox: Install directory
+;
+_GBHeight := CalculateGroupBoxHeight(4,1,0,3)
; (_GBTextLines, _GBButtonLines, _GBCheckBoxLines,
_GBSpacings) (Number of text lines, number of button lines, number of checkbox
lines, number of spacings)
+Gui, Add, GroupBox, xs w%_GuiWidth2% h%_GBHeight% Section, Installation
directory
+
+Gui, Add, Text, xs+%_GBHorMargin% ys+%_GBTopMargin% W%_GuiWidth3%
v_cInstallDirText, ...
+
+_Buttonx :=
(_GuiWidth3+_GBHorMargin)-1*(_StandardMargin+_ButtonWidth)-_ButtonWidth
+_Buttony := _GBTopMargin+_TextHeight+_StandardMargin
+Gui, Add, Button, xs+%_Buttonx% ys%_Buttony% W%_ButtonWidth% v_cBrowseButton,
&Browse
+Gui, Add, Button, x+%_StandardMargin% W%_ButtonWidth% v_cDefaultButton,
De&fault
+
+_Texty := 24+_StandardMargin
+Gui, Add, Text, xs+%_GBHorMargin% yp+%_Texty% W%_GuiWidth3%, Freenet requires
at least %_UsedFreeSpace% MB free disk space, but will not install with less
than %_RequiredFreeSpace% MB free. The amount of space reserved for the node
can be changed after installation.
+
+; Calculate size and placement of status text. Hack-hack, I know
+_StatusSize := 40
; The margin between "Status:" and the actual status
text
+_StatusTextSize := _GuiWidth3-_StatusSize-_GBHorMargin
+
+Gui, Add, Text, W%_StatusSize%, Status:
+Gui, Add, Text, W%_StatusTextSize% x+0 v_cInstallDirStatusText, ...
+
+;
+; Groupbox: Node service
+;
+_GBHeight := CalculateGroupBoxHeight(4,0,0,0)
; (_GBTextLines, _GBButtonLines, _GBCheckBoxLines,
_GBSpacings) (Number of text lines, number of button lines, number of checkbox
lines, number of spacings)
+Gui, Add, GroupBox, xs w%_GuiWidth2% h%_GBHeight% Section, Node service
+
+Gui, Add, Text, xs+%_GBHorMargin% ys+%_GBTopMargin% W%_GuiWidth3%, After
installation, your Freenet node will automatically start in the background as a
system service. This is required in order for your node to be a part of the
Freenet network, and will use a small amount of resources (CPU, RAM and
internet connection). The amount of resources used by the node can be adjusted
after installation.
+
+;
+; Groupbox: Additional settings
+;
+_GBHeight := CalculateGroupBoxHeight(0,0,3,0)
; (_GBTextLines, _GBButtonLines, _GBCheckBoxLines,
_GBSpacings) (Number of text lines, number of button lines, number of checkbox
lines, number of spacings)
+Gui, Add, GroupBox, xs w%_GuiWidth2% h%_GBHeight% Section, Additional settings
+
+Gui, Add, Checkbox, xs+%_GBHorMargin% ys+%_GBTopMargin% W%_GuiWidth3%
v_cInstallStartMenuShortcuts Checked%_DefaultInstallStartMenuShortcuts%,
Install &start menu shortcuts (All users: Browse Freenet, Start Freenet, Stop
Freenet)
+Gui, Add, Checkbox, v_cInstallDesktopShortcuts
Checked%_DefaultInstallDesktopShortcuts%, Install &desktop shortcut (All users:
Browse Freenet)
+Gui, Add, Checkbox, v_cBrowseAfterInstall Checked%_DefaultBrowseAfterInstall%,
Browse Freenet &after installation
+
+;
+; Status bar and main buttons
+;
+Gui, Add, Button, Default xs W%_ButtonWidth% v_cExitButton Section, E&xit
+
+_StatusSize := _GuiWidth2-2*(_StandardMargin+_ButtonWidth)
; Calculate size of our status bar
+
+Gui, Add, Progress, x+%_StandardMargin% yp+%_MixLineTextPush% W%_StatusSize%
Hidden h%_TextHeight% -Smooth v_cProgressBar
+Gui, Add, Text, Center xp yp W%_StatusSize% v_cStatusText, Version
%_Inc_FreenetVersion% - Build %_Inc_FreenetBuild%
+
+Gui, Add, Button, x+%_StandardMargin% ys W%_ButtonWidth% v_cInstallButton,
&Install
+
+;
+; Gui layout finished, do GUI init stuff and return to "idle" state...
+;
+SetInstallDir(_DefaultInstallDir)
+SetTimer, UpdateInstallDirStatusTimer, 5000
+Gui, Show, W%_GuiWidth%, Freenet Installer (Alpha)
+return
+
+;
+; Actual installation thread starts here (when user presses "Install")
+;
+ButtonInstall:
+Gui, +OwnDialogs
; Make an eventual messagebox "stick" to the main GUI
+VisualInstallStart(9)
; Freeze GUI, show progress bar, etc... Argument is
number of "ticks" in the progress bar. Should match the number of +1's during
the rest of the installation
+FindInstallSuffix()
; Figure out if we already have existing installations
we need to take into consideration, and if so, find a proper install suffix
+
+;
+; Test write access to install folder. For usability reasons we should not
write anything to disk before user presses "install", hence placed here
+;
+If (!TestInstallDirWriteAccess())
+{
+ MsgBox, 48, Freenet Installer Error, Freenet Installer was not able to
write to the selected installation directory.`nPlease select one to which you
have write access. ; 48 = Icon Exclamation
+ VisualInstallEnd()
+ return
+}
+GuiControl, , _cProgressBar, +1
+
+;
+; Find a free port for fproxy
+;
+_FProxyPort := FindFreePort(8888)
+If (_FProxyPort = -1)
; The actual error message will be displayed by
FindFreePort(), so just handle the GUI recovery
+{
+ VisualInstallEnd()
+ return
+}
+GuiControl, , _cProgressBar, +1
+
+;
+; Find a free port for fcp
+;
+_FCPPort := FindFreePort(9481)
+If (_FCPPort = -1)
+{
+ VisualInstallEnd()
+ return
+}
+GuiControl, , _cProgressBar, +1
+
+;
+; Install the actual node files, as defined in the include
+;
+#Include FreenetInstaller_Include_FileInstalls.inc
+GuiControl, , _cProgressBar, +1
+
+;
+; Write installation specific stuff to various files and the Windows registry
+;
+FileAppend, %_InstallSuffix%,
%_InstallDir%\installid.dat ; Write id file
in case third party software needs it. Will be empty if we are not using a
suffix.
+
+FileAppend, fproxy.port=%_FProxyPort%`n,
%_InstallDir%\freenet.ini
+FileAppend, fcp.port=%_FCPPort%`n,
%_InstallDir%\freenet.ini
+FileAppend,
pluginmanager.loadplugin=JSTUN;KeyExplorer;ThawIndexBrowser;UPnP;XMLLibrarian`n,
%_InstallDir%\freenet.ini
+FileAppend, node.updater.autoupdate=true`n,
%_InstallDir%\freenet.ini
+FileAppend, End`n,
%_InstallDir%\freenet.ini
+
+FileAppend, `n,
%_InstallDir%\wrapper.conf
+FileAppend, # Name of the service`n,
%_InstallDir%\wrapper.conf
+FileAppend, wrapper.ntservice.name=freenet%_InstallSuffix%`n,
%_InstallDir%\wrapper.conf
+FileAppend, `n,
%_InstallDir%\wrapper.conf
+FileAppend, # Display name of the service`n,
%_InstallDir%\wrapper.conf
+FileAppend, wrapper.ntservice.displayname=Freenet Background
Service%_InstallSuffix%`n,
%_InstallDir%\wrapper.conf
+FileAppend, `n,
%_InstallDir%\wrapper.conf
+FileAppend, # User account to run the serve runder`n,
%_InstallDir%\wrapper.conf
+FileAppend, wrapper.ntservice.account=.\Freenet%_InstallSuffix%`n,
%_InstallDir%\wrapper.conf
+
+RegWrite, REG_SZ, HKEY_LOCAL_MACHINE,
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Freenet%_InstallSuffix%,
DisplayIcon, %_InstallDir%\freenet.ico
+RegWrite, REG_SZ, HKEY_LOCAL_MACHINE,
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Freenet%_InstallSuffix%,
DisplayName, Freenet%_InstallSuffix%
+RegWrite, REG_SZ, HKEY_LOCAL_MACHINE,
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Freenet%_InstallSuffix%,
UninstallPath, %_InstallDir%\bin\freenetuninstaller.exe ; Seems to has been
replaced by UninstallString in XP, so we are just keeping it to support 2000 as
well
+RegWrite, REG_SZ, HKEY_LOCAL_MACHINE,
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Freenet%_InstallSuffix%,
UninstallString, %_InstallDir%\bin\freenetuninstaller.exe
+GuiControl, , _cProgressBar, +1
+
+;
+; Create our custom user
+;
+_CustomUserPassword := GenerateRandomNumberString(12)
; According to the old installer, 12 chars is max. to
avoid warnings about backwards-compatability. The password itself is apparently
also needed to run services under a custom account.
+RunWait, %comspec% /c "net user Freenet%_InstallSuffix% %_CustomUserPassword%
/add /comment:"Freenet service user. Please do not delete!" /expires:never
/passwordchg:no /fullname:"Freenet%_InstallSuffix% user"", , Hide UseErrorLevel
+
+If (A_OSVersion = "WIN_VISTA")
+{
+ RunWait, %comspec% /c "icacls "%_InstallDir%" /E /T /C /G
Freenet%_InstallSuffix%:F", , Hide UseErrorLevel
+}
+Else
+{
+ RunWait, %comspec% /c "cacls "%_InstallDir%" /E /T /C /G
Freenet%_InstallSuffix%:F", , Hide UseErrorLevel
+}
+
+RegWrite, REG_DWORD, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\SpecialAccounts\UserList, Freenet%_InstallSuffix%, 0
+
+FileInstall, files_bundle\netuser.exe, %A_WorkingDir%\netuser.exe
; Extract 3rd party "netuser" tool. Taken from old
installer.
+RunWait, %A_WorkingDir%\netuser.exe Freenet%_InstallSuffix% /pwnexp:y, , Hide
UseErrorLevel ; Set "password never expires" flag on our custom user
+
+FileInstall, files_bundle\Ntrights.exe, %A_WorkingDir%\Ntrights.exe
; Extract 3rd party "Ntrights" tool. Taken from old
installer. (Apparently belongs to the resource kit and is OK to redistribute)
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% +r
SeServiceLogonRight, , Hide UseErrorLevel
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% -r
SeDenyServiceLogonRight, , Hide UseErrorLevel
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% +r
SeIncreaseBasePriorityPrivilege, , Hide UseErrorLevel
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% +r
SeDenyNetworkLogonRight, , Hide UseErrorLevel
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% +r
SeDenyInteractiveLogonRight, , Hide UseErrorLevel
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% -r
SeShutdownPrivilege, , Hide UseErrorLevel
+GuiControl, , _cProgressBar, +1
+
+;
+; Install service
+;
+RunWait, %_InstallDir%\bin\wrapper-windows-x86-32.exe -i ../wrapper.conf
wrapper.ntservice.password=%_CustomUserPassword%, , Hide UseErrorLevel
+GuiControl, , _cProgressBar, +1
+
+;
+; Install shortcuts
+;
+If (_cInstallStartMenuShortcuts)
+{
+ FileCreateDir, %A_ProgramsCommon%\Freenet%_InstallSuffix%
+ FileCreateShortcut, %_InstallDir%\freenetlauncher.exe,
%A_ProgramsCommon%\Freenet%_InstallSuffix%\Browse Freenet.lnk, , , Opens the
Freenet proxy homepage in a web browser, %_InstallDir%\Freenet.ico
+ FileCreateShortcut, %_InstallDir%\bin\start.exe,
%A_ProgramsCommon%\Freenet%_InstallSuffix%\Start Freenet.lnk, , , Starts the
background service needed to use Freenet, %_InstallDir%\Freenet.ico
+ FileCreateShortcut, %_InstallDir%\bin\stop.exe,
%A_ProgramsCommon%\Freenet%_InstallSuffix%\Stop Freenet.lnk, , , Stops the
background service needed to use Freenet, %_InstallDir%\Freenet.ico
+}
+If (_cInstallDesktopShortcuts)
+{
+ FileCreateDir, %A_DesktopCommon%
+ FileCreateShortcut, %_InstallDir%\freenetlauncher.exe,
%A_DesktopCommon%\Browse Freenet%_InstallSuffix%.lnk, , , Opens the
Freenet%_InstallSuffix% proxy homepage in a web browser,
%_InstallDir%\Freenet.ico
+}
+GuiControl, , _cProgressBar, +1
+
+;
+; Start the node
+;
+RunWait, %_InstallDir%\bin\start.exe, , UseErrorLevel
+GuiControl, , _cProgressBar, +1
+
+;
+; Installation (almost) finished! (launching fproxy is done below for
usability reasons)
+;
+MsgBox, 64, Freenet Installer, Installation finished successfully! ; 64 = Icon
Asterisk (info)
+
+;
+; Launch fproxy
+;
+If (_cBrowseAfterInstall)
+{
+ Run, %_InstallDir%\freenetlauncher.exe, , UseErrorLevel
+}
+
+;
+; Installation (completely) finished!
+;
+Exit()
+return
+
+;
+; Include helpers
+;
+#Include FreenetInstaller_Include_Helpers.inc
; Include our helper functions. Should be placed at the
very end because of the labels in it.
Added: trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Header.png
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Header.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Icon.ico
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Icon.ico
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added:
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_FileInstalls.inc
===================================================================
---
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_FileInstalls.inc
(rev 0)
+++
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_FileInstalls.inc
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,39 @@
+;
+; Windows Freenet Installer - Include file - File installs
+;
+; This file contains the raw installation commands for the node files, and
will be included directly
+; into the installer at compile time.
+;
+; The FileInstall command handles both the packing (path as argument 1) and
unpacking (path as
+; argument 2) of the file.
+;
+; Remember to create any directories with FileCreateDir before doing
FileInstalls to them.
+;
+
+FileCreateDir, %_InstallDir%
+FileInstall, files_install\freenet.ico,
%_InstallDir%\freenet.ico
+FileInstall, files_install\freenet.jar,
%_InstallDir%\freenet.jar
+FileInstall, files_install\freenet-ext.jar,
%_InstallDir%\freenet-ext.jar
+FileInstall, files_install\freenetlauncher.exe,
%_InstallDir%\freenetlauncher.exe
+FileInstall, files_install\LICENSE.Freenet,
%_InstallDir%\LICENSE.Freenet
+FileInstall, files_install\LICENSE.Mantissa,
%_InstallDir%\LICENSE.Mantissa
+FileInstall, files_install\seednodes.fref,
%_InstallDir%\seednodes.fref
+FileInstall, files_install\startssl.pem,
%_InstallDir%\startssl.pem
+FileInstall, files_install\wrapper.conf,
%_InstallDir%\wrapper.conf
+
+FileCreateDir,
%_InstallDir%\bin
+FileInstall, files_install\bin\freenetuninstaller.exe,
%_InstallDir%\bin\freenetuninstaller.exe
+FileInstall, files_install\bin\start.exe,
%_InstallDir%\bin\start.exe
+FileInstall, files_install\bin\stop.exe,
%_InstallDir%\bin\stop.exe
+FileInstall, files_install\bin\wrapper-windows-x86-32.exe,
%_InstallDir%\bin\wrapper-windows-x86-32.exe
+
+
+FileCreateDir,
%_InstallDir%\lib
+FileInstall, files_install\lib\wrapper-windows-x86-32.dll,
%_InstallDir%\lib\wrapper-windows-x86-32.dll
+
+FileCreateDir,
%_InstallDir%\plugins
+FileInstall, files_install\plugins\JSTUN.jar,
%_InstallDir%\plugins\JSTUN.jar
+FileInstall, files_install\plugins\KeyExplorer.jar,
%_InstallDir%\plugins\KeyExplorer.jar
+FileInstall, files_install\plugins\ThawIndexBrowser.jar,
%_InstallDir%\plugins\ThawIndexBrowser.jar
+FileInstall, files_install\plugins\UPnP.jar,
%_InstallDir%\plugins\UPnP.jar
+FileInstall, files_install\plugins\XMLLibrarian.jar,
%_InstallDir%\plugins\XMLLibrarian.jar
Added:
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_Helpers.inc
===================================================================
---
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_Helpers.inc
(rev 0)
+++
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_Helpers.inc
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,425 @@
+;
+; Windows Freenet Installer - Include file - Helpers
+;
+; This file contains helpers that are used throughout the installer. Placed
here to not clutter the
+; main script file. Will be included directly into the installer (at the
bottom) at compile time.
+;
+
+;
+; General helpers
+;
+Exit()
+{
+ global
+
+ SetTimer, RecheckOldUninstallerTimer, Off
+ SetTimer, RecheckJavaVersionTimer, Off
+ SetTimer, UpdateInstallDirStatusTimer, Off
+
+ Gui, Destroy
+
+ FileRemoveDir, %A_Temp%\FreenetInstaller, 1
; Clean up after ourselves
+
+ ExitApp
; Bye Bye
+}
+
+;
+; General GUI helpers
+;
+CalculateGroupBoxHeight(_GBTextLines, _GBButtonLines, _GBCheckBoxLines,
_GBSpacings)
+{
+ global
+
+ return
_GBTopMargin+(_GBTextLines*_TextHeight)+(_GBButtonLines*24)+(_GBCheckboxLines*17)+(_GBSpacings*_StandardMargin)+_GBBottomMargin
+}
+
+DisableCloseButton(hWnd = "")
+{
+ global
+
+ If hWnd=
+ {
+ hWnd := WinExist("A")
+ }
+
+ hSysMenu:=DllCall("GetSystemMenu","Int",hWnd,"Int",FALSE)
+ nCnt:=DllCall("GetMenuItemCount","Int",hSysMenu)
+
+ DllCall("RemoveMenu","Int",hSysMenu,"UInt",nCnt-1,"Uint","0x400")
+ DllCall("RemoveMenu","Int",hSysMenu,"UInt",nCnt-2,"Uint","0x400")
+ DllCall("DrawMenuBar","Int",hWnd)
+}
+
+EnableCloseButton(hWnd = "")
+{
+ If hWnd=
+ {
+ hWnd := WinExist("A")
+ }
+
+ DllCall("GetSystemMenu","Int",hWnd,"Int",TRUE)
+ DllCall("DrawMenuBar","Int",hWnd)
+}
+
+GuiClose:
; Triggered if user closes GUI via "the red
cross"/ALT+F4/...
+ButtonExit:
+ Exit()
+return
+
+;
+; Java check helpers
+;
+CheckJavaVersion()
+{
+ global
+
+ RegRead, _JavaVersion, HKEY_LOCAL_MACHINE, SOFTWARE\JavaSoft\Java
Runtime Environment, CurrentVersion
+
+ If (ErrorLevel || _JavaVersion < _RequiredJRE)
+ {
+ return 0
+ }
+ else
+ {
+ RegRead, _JavaLib, HKEY_LOCAL_MACHINE, SOFTWARE\JavaSoft\Java
Runtime Environment\%_JavaVersion%, RuntimeLib
+
+ If (ErrorLevel || !FileExist(_JavaLib))
+ {
+ return 0
+ }
+ Else
+ {
+ return 1
+ }
+ }
+}
+
+ButtonInstallJava:
+ GuiControl, +Disabled, _cInstallJavaButton
+ FileInstall, files_bundle\jre-online-installer.exe,
%A_WorkingDir%\jre-online-installer.exe
+ RunWait, %A_WorkingDir%\jre-online-installer.exe, , UseErrorLevel
+ GuiControl, -Disabled, _cInstallJavaButton
+return
+
+RecheckJavaVersionTimer:
+ If (CheckJavaVersion())
+ {
+ SetTimer, RecheckJavaVersionTimer, Off
+ Gui, Destroy
+ Goto, GuiStart
+ }
+return
+
+;
+; Old uninstaller check helpers
+;
+CheckForOldUninstaller()
+{
+ global
+
+ RegRead, _OldUninstallerPath, HKEY_LOCAL_MACHINE,
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Freenet 0.7.0 "Darknet",
UninstallString
+
+ If (ErrorLevel)
+ {
+ return 0
+ }
+ else
+ {
+ return 1
+ }
+}
+
+RecheckOldUninstallerTimer:
+ If (!CheckForOldUninstaller())
+ {
+ SetTimer, RecheckOldUninstallerTimer, Off
+ Gui, Destroy
+ Goto, GuiStart
+ }
+return
+
+ButtonUninstall:
+ GuiControl, +Disabled, _cUninstallButton
+ RunWait, %_OldUninstallerPath%, , UseErrorLevel
+ GuiControl, -Disabled, _cUninstallButton
+return
+
+;
+; Install path helpers
+;
+ButtonBrowse:
+ Gui, +OwnDialogs
; Bind the dialog below to the main GUI
+
+ StringLeft, _OldBaseInstallDir, _InstallDir, StrLen(_InstallDir)-8
+ FileSelectFolder, _NewInstallDir, *%_OldBaseInstallDir%, 1, If you do
not choose a folder containg containing "Freenet" in the path, a folder will be
created for you automatically. ; *=Don't restrict user from browsing upwards
from default folder, 1=Show a 'new folder' button
+ _NewInstallDir := RegExReplace(_NewInstallDir, "\\$")
; Removes the trailing backslash, if present
+
+ If (_NewInstallDir <> "")
; If user cancels, this will be empty, so don't pass it
on in that case
+ {
+ SetInstallDir(_NewInstallDir)
+ }
+return
+
+ButtonDefault:
+ SetInstallDir(_DefaultInstallDir)
+return
+
+SetInstallDir(_NewInstallDir)
+{
+ global
+
+ ;If (SubStr(_NewInstallDir, -7) <> "\Freenet")
+ IfNotInString, _NewInstallDir, Freenet
+ {
+ _NewInstallDir = %_NewInstallDir%\Freenet
+ }
+
+ _InstallDir := _NewInstallDir
+ UpdateInstallDirStatus()
+}
+
+UpdateInstallDirStatus()
+{
+ global
+
+ If (StrLen(_InstallDir) > (_GuiWidth3 / 6))
+ {
+ StringLeft, _InstallDirTrimmed, _InstallDir, (_GuiWidth3 / 6) -
3
+ GuiControl, Text, _cInstallDirText, %_InstallDirTrimmed%...
+ }
+ Else
+ {
+ GuiControl, Text, _cInstallDirText, %_InstallDir%
+ }
+
+ If (_InstallDir = _DefaultInstallDir)
+ {
+ GuiControl, +Disabled, _cDefaultButton
+ }
+ Else
+ {
+ GuiControl, -Disabled, _cDefaultButton
+ }
+
+ RegExMatch(_InstallDir, "i)([a-z]:\\).+", _InstallDrive)
; Check for a valid drive. If found, store in
_InstallDrive1 (subpattern match number 1 = array 1)
+ If (ErrorLevel || _InstallDrive1 = "")
+ {
+ GuiControl, +cRed, _cInstallDirStatusText
+ GuiControl, Text, _cInstallDirStatusText, Invalid install path!
+ GuiControl, +Disabled, _cInstallButton
+ }
+ Else if (StrLen(_InstallDir) + _InternalPathLength > 255)
+ {
+ GuiControl, +cRed, _cInstallDirStatusText
+ GuiControl, Text, _cInstallDirStatusText, Invalid install path!
(Too long for file system to handle)
+ GuiControl, +Disabled, _cInstallButton
+ }
+ Else
+ {
+ DriveSpaceFree, _InstallDriveFreeSpace, %_InstallDrive1%
+ If (_InstallDriveFreeSpace < _RequiredFreeSpace)
+ {
+ GuiControl, +cRed, _cInstallDirStatusText
+ GuiControl, Text, _cInstallDirStatusText, Not enough
free space on installation drive!
+ GuiControl, +Disabled, _cInstallButton
+ }
+ Else IfExist, %_InstallDir%\freenet.jar
+ {
+ GuiControl, +cRed, _cInstallDirStatusText
+ GuiControl, Text, _cInstallDirStatusText, Freenet
already installed! Please uninstall first or choose another directory!
+ GuiControl, +Disabled, _cInstallButton
+ }
+ Else
+ {
+ GuiControl, +cGreen, _cInstallDirStatusText
+ GuiControl, Text, _cInstallDirStatusText, Installation
directory OK!
+ GuiControl, -Disabled, _cInstallButton
+ }
+ }
+}
+
+UpdateInstallDirStatusTimer:
+ UpdateInstallDirStatus()
+return
+
+;
+; Actual installation helpers
+;
+FindInstallSuffix()
+{
+ global
+
+ Loop
+ {
+ If (A_Index = 1)
+ {
+ _InstallSuffix =
+ }
+ Else
+ {
+ _InstallSuffix = _%A_Index%
+ }
+
+ RegRead, _Temp, HKEY_LOCAL_MACHINE,
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Freenet%_InstallSuffix%,
UninstallString
+
+ If (ErrorLevel)
+ {
+ break
; Found a free entry! (...hopefully! Could
technically also be an access error)
+ }
+ }
+}
+
+TestInstallDirWriteAccess()
+{
+ global
+
+ FileCreateDir, %_InstallDir%
+ FileAppend, <writetest>, %_InstallDir%\writetest.tmp
+ If (ErrorLevel)
+ {
+ FileRemoveDir, %_InstallDir%
; Will by default not remove dir if it contains
anything at all
+ return 0
+ }
+ Else
+ {
+ FileDelete, %_InstallDir%\writetest.tmp
+ return 1
+ }
+}
+
+VisualInstallStart(_Ticks)
+{
+ global
+
+ Gui, Submit, NoHide
; Read values of checkboxes etc. into their
variables
+
+ ; Disable timers and buttons
+ SetTimer, UpdateInstallDirStatusTimer, Off
+ GuiControl, +Disabled, _cBrowseButton
+ GuiControl, +Disabled, _cDefaultButton
+ GuiControl, +Disabled, _cExitButton
+ GuiControl, +Disabled, _cInstallButton
+ DisableCloseButton()
+
+ GuiControl, +Range0-%_Ticks%, _cProgressBar
+
+ ; Switch status text with progress bar
+ GuiControl, +Hidden, _cStatusText
+ GuiControl, -Hidden, _cProgressBar
+}
+
+VisualInstallEnd()
+{
+ global
+
+ ; Re-enable timers and buttons
+ SetTimer, UpdateInstallDirStatusTimer, 5000
+ GuiControl, -Disabled, _cBrowseButton
+ GuiControl, -Disabled, _cExitButton
+ GuiControl, -Disabled, _cInstallButton
+ EnableCloseButton()
+
+ ; Switch status text with progress bar
+ GuiControl, -Hidden, _cStatusText
+ GuiControl, +Hidden, _cProgressBar
+
+ ; Do a check on install dir (mostly to fix default button status)
+ UpdateInstallDirStatus()
+}
+
+FindFreePort(_StartPort)
+{
+ global
+
+ Loop
+ {
+ if (A_Index > 256)
; If this many tries isn't enough, checking any
more in this way is probably just a waste of time. Throw an error instead.
+ {
+ _Endport := _StartPort + 256 - 1
+ MsgBox, 48, Freenet Installer error, Freenet Installer
was not able to find a free port on your system in the range
%_StartPort%-%_EndPort%.`nPlease free a system port in this range to install
Freenet. ; 48 = Icon Exclamation
+ return -1
+ }
+ Else If (TestPortAvailability(_StartPort+A_Index-1))
+ {
+ return _StartPort+A_Index-1
+ }
+ }
+}
+
+TestPortAvailability(_Port)
+{
+ global
+
+ VarSetCapacity(wsaData, 32)
+ _Result := DllCall("Ws2_32\WSAStartup", "UShort", 0x0002, "UInt",
&wsaData) ; Request Winsock 2.0 (0x0002)
+
+ if (ErrorLevel)
+ {
+ MsgBox, 16, Freenet Installer fatal error, Freenet Installer
was not able to create a Winsock 2.0 socket`nfor port availability testing. ;
16 = Icon Hand (stop/error)
+ Exit()
+ }
+ Else If (_Result)
; Non-zero, which means it failed (most Winsock
functions return 0 upon success)
+ {
+ _Error := DllCall("Ws2_32\WSAGetLastError")
+ DllCall("Ws2_32\WSACleanup")
+ MsgBox, 16, Freenet Installer fatal error, Freenet Installer
was not able to create a Winsock 2.0 socket`nfor port availability testing
(Error: %_Error%). ; 16 = Icon Hand (stop/error)
+ Exit()
+ }
+
+ AF_INET = 2
+ SOCK_STREAM = 1
+ IPPROTO_TCP = 6
+
+ _Socket := DllCall("Ws2_32\socket", "Int", AF_INET, "Int", SOCK_STREAM,
"Int", IPPROTO_TCP)
+ if (_Socket = -1)
+ {
+ _Error := DllCall("Ws2_32\WSAGetLastError")
+ DllCall("Ws2_32\WSACleanup")
+ MsgBox, 16, Freenet Installer fatal error, Freenet Installer
was not able to create a Winsock 2.0 socket`nfor port availability testing
(Error: %_Error%). ; 16 = Icon Hand (stop/error)
+ Exit()
+ }
+
+ SizeOfSocketAddress = 16
+ VarSetCapacity(SocketAddress, SizeOfSocketAddress)
+ InsertInteger(2, SocketAddress, 0, AF_INET)
+ InsertInteger(DllCall("Ws2_32\htons", "UShort", _Port), SocketAddress,
2, 2)
+ InsertInteger(DllCall("Ws2_32\inet_addr", "Str", "127.0.0.1"),
SocketAddress, 4, 4)
+
+ If DllCall("Ws2_32\connect", "UInt", _Socket, "UInt", &SocketAddress,
"Int", SizeOfSocketAddress)
+ {
+ _Available := 1
; DllCall returned non-zero, e.g. fail - which
means port is most likely free
+ }
+ Else
+ {
+ _Available := 0
+ }
+
+ DllCall("Ws2_32\WSACleanup")
; Do a cleanup (including closing of any open
sockets)
+ return _Available
+}
+
+InsertInteger(pInteger, ByRef pDest, pOffset = 0, pSize = 4)
+{
+ global
+
+ Loop, %pSize%
; Copy each byte in the integer into the
structure as raw binary data.
+ {
+ DllCall("RtlFillMemory", "UInt", &pDest + pOffset + A_Index-1,
"UInt", 1, "UChar", pInteger >> 8*(A_Index-1) & 0xFF)
+ }
+}
+
+GenerateRandomNumberString(_RandomNumberLength)
+{
+ global
+
+ _RandomNumberString =
; Empty variable
+
+ Loop, %_RandomNumberLength%
+ {
+ Random, _RandomNumber, 0, 9
+
+ _RandomNumberString = %_RandomNumberString%%_RandomNumber%
+ }
+
+ return _RandomNumberString
+}
Added:
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_Info.inc
===================================================================
---
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_Info.inc
(rev 0)
+++
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Include_Info.inc
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,15 @@
+;
+; Windows Freenet Installer - Include file - Build info
+;
+; This file contains build info variables used for displaying info in the
installer. These values should
+; be updated by a build script before compiling the installer. Will be
included directly into the
+; installer (at the top) at compile time.
+;
+; _Inc_FreenetVersion - (string) Version of Freenet the installer contains.
+; _Inc_FreenetBuild - (string) Build of Freenet the installer contains.
+; _Inc_InstallSize - (float) In MB, size of all files to be installed.
+;
+
+_Inc_FreenetVersion = 0.7
+_Inc_FreenetBuild = #1204
+_Inc_InstallSize := 9.04
Added:
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Uninstaller.ahk
===================================================================
---
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Uninstaller.ahk
(rev 0)
+++
trunk/apps/wininstaller/src_freenetinstaller/FreenetInstaller_Uninstaller.ahk
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,309 @@
+;
+; Windows Freenet Uninstaller by Zero3 (zero3 that-a-thingy zero3
that-dot-thingy dk) - http://freenetproject.org/
+;
+; This is the uninstaller. Should be built before the installer,
+; and included into the installer as any other file to be installed.
+;
+; Extra credits:
+; - Service functions: heresy (http://www.autohotkey.com/forum/topic34984.html)
+; - RemProf.exe: Ctrl-Alt-Del IT Consultancy
(http://www.ctrl-alt-del.com.au/CAD_TSUtils.htm)
+;
+
+;
+; Don't-touch-unless-you-know-what-you-are-doing settings
+;
+#NoEnv ; Recommended
for performance and compatibility with future AutoHotkey releases
+#NoTrayIcon ; We won't need
this...
+#SingleInstance ignore ; Only
allow one instance of at any given time (theoretically, if we allowed multiple,
we could run into some temp files problems)
+
+SendMode, Input ;
Recommended for new scripts due to its superior speed and reliability
+StringCaseSense, Off ; Treat A-Z as
equal to a-z when comparing strings. Useful when dealing with folders, as
Windows treat them as equals.
+
+;
+; Customizable settings
+;
+_ServiceTimeout := 30 ; Maximum
number of seconds we wait before "timing out" and throwing an error when
managing the system service
+_ProgressFormat = A T W300 FS10 ; How
our progress bar should look. The 'R' (range) parameter is added later in the
script.
+
+;
+; Check for administrator privileges.
+;
+If not (A_IsAdmin)
+{
+ PopupErrorMessage("The uninstaller requires administrator privileges to
uninstall Freenet.`nPlease make sure that your user account has administrative
access to the system,`nand the uninstaller is executed with access to use these
privileges.")
+ ExitApp
+}
+
+;
+; Setup various stuff and make sure that we are running from the temp folder
(we need to, because we can't delete the install folder if we are running the
uninstaller from it at the same time)
+;
+Loop, %A_Temp%, 1
+{
+ LongTempDirPath = %A_LoopFileLongPath%
; Windows might give us the temp path as an "8.3 short
name", so lets get the *real* path
+}
+
+If (A_ScriptDir <> (LongTempDirPath . "\FreenetUninstaller"))
+{
+ _InstallDir := RegExReplace(A_ScriptDir, "i)\\bin$", "")
; If uninstaller is located in the \bin folder, go back
a step.
+
+ FileRemoveDir, %A_Temp%\FreenetUninstaller, 1
; Remove any old temp dir
+ FileCreateDir, %A_Temp%\FreenetUninstaller
; Create a new temp dir
+ If (ErrorLevel)
+ {
+ PopupErrorMessage("The uninstaller was not able to unpack
necessary files to:`n`n" . A_Temp . "\FreenetUninstaller`n`nPlease make sure
that the uninstaller has full access to the system's temporary files folder.")
+ ExitApp
+ }
+
+ FileCopy, %A_ScriptFullPath%, %A_Temp%\FreenetUninstaller
+ Run, %A_Temp%\FreenetUninstaller\%A_ScriptName% "%_InstallDir%", ,
UseErrorLevel
+
+ ExitApp
+}
+Else
+{
+ _InstallDir = %1%
; Fetch installdir from the command line parameter
+
+ If (!FileExist(_InstallDir . "\freenet.jar") || !FileExist(_InstallDir
. "\installid.dat"))
+ {
+ PopupErrorMessage("The uninstaller was unable to recognize your
Freenet installation at:`n`n" . _InstallDir . "`n`nPlease run this uninstaller
from the 'bin' folder of a Freenet installation.")
+ Exit()
+ }
+
+ FileReadLine, _InstallSuffix, %_InstallDir%\installid.dat, 1
+
+ SetWorkingDir, %A_ScriptDir%
; Switch to our temp dir as working dir. *NO*
FileInstall lines before this!
+}
+
+;
+; Ask for confirmation and about the uninstallation survey
+;
+MsgBox, 33, Freenet uninstaller, Do you really want to uninstall
Freenet%_InstallSuffix%? ; 1 = OK/Cancel, 32 = Icon Question
+IfMsgBox, Cancel
+{
+ Exit()
+}
+
+MsgBox, 36, Freenet uninstaller, The development team would appreciate it very
much if you can spare a moment`nand fill out a short, anonymous online survey
about the reason for your uninstallation.`n`nThe survey, located on the Freenet
website, will be opened in your browser`nafter the uninstallation.`n`nTake the
uninstallation survey? ; 4 = Yes/No, 32 = Icon Question
+IfMsgBox, Yes
+{
+ _DoSurvey := 1
+}
+Else
+{
+ _DoSurvey := 0
+}
+
+;
+; Allright. No way back!
+;
+Progress, %_ProgressFormat% R0-6, ..., , Freenet uninstaller
; "R0-6" defines number of "ticks" in the progress bar.
Should match the numbers below.
+
+;
+; Shut down node
+;
+Progress, , Stopping system service...
+
+Loop
+{
+ _ServiceState := Service_State("freenet" . _InstallSuffix)
+
+ If (A_Index > _ServiceTimeout)
+ {
+ PopupErrorMessage("The uninstaller was unable to control the
Freenet system service as it appears to be stuck.`n`nPlease try again.`n`nIf
the problem keeps occurring, please report this error message to the
developers.")
+ Exit()
+ }
+ Else If (_ServiceState == -1 || _ServiceState == -4)
+ {
+ PopupErrorMessage("The uninstaller was unable to find and
control the Freenet system service.`n`nPlease try again.`n`nIf the problem
keeps occurring, please report this error message to the developers.")
+ Exit()
+ }
+ Else If (_ServiceState == 2 || _ServiceState == 3 || _ServiceState == 5
|| _ServiceState == 6)
+ {
+ Sleep, 1000
+ Continue
+ }
+ Else If (_ServiceState == 1)
+ {
+ Break ; Service is
not running. Continue!
+ }
+ Else
+ {
+ Service_Stop("freenet" . _InstallSuffix)
+ Sleep, 1000
+ Continue
+ }
+}
+
+Progress, 1
+
+;
+; Remove service
+;
+Progress, , Removing system service...
+
+RunWait, %_InstallDir%\bin\wrapper-windows-x86-32.exe -r ../wrapper.conf, ,
Hide UseErrorLevel
+
+Progress, 2
+
+;
+; Remove special account rights for our custom user
+;
+Progress, , Removing custom user account rights...
+
+FileInstall, files_bundle\Ntrights.exe, %A_WorkingDir%\Ntrights.exe
; Extract 3rd party "Ntrights" tool. Taken from old
installer. (Apparently belongs to the resource kit and is OK to redistribute)
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% -r
SeServiceLogonRight, , Hide UseErrorLevel
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% -r
SeIncreaseBasePriorityPrivilege, , Hide UseErrorLevel
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% -r
SeDenyNetworkLogonRight, , Hide UseErrorLevel
+RunWait, %A_WorkingDir%\Ntrights.exe -u Freenet%_InstallSuffix% -r
SeDenyInteractiveLogonRight, , Hide UseErrorLevel
+FileDelete, %A_WorkingDir%\Ntrights.exe
+
+Progress, 3
+
+;
+; Remove files
+;
+Progress, , Removing files...
+RemoveFiles:
+
+FileRemoveDir, %_InstallDir%, 1
+If (ErrorLevel)
+{
+ MsgBox, 18, Freenet uninstaller error, The uninstaller was unable to
delete the Freenet files located at:`n`n%_InstallDir%`n`nPlease close all
applications with open files inside this directory. ; 2 =
Abort/Retry/Ignore, 16 = Icon Hand (stop/error)
+
+ IfMsgBox, Abort
+ {
+ PopupErrorMessage("The uninstallation was aborted.`n`nPlease
manually remove the rest of your Freenet installation.")
+ Exit()
+ }
+ IfMsgBox, Retry
+ {
+ Goto, RemoveFiles
+ }
+}
+
+; We don't really care if deletion of shortcuts fail, as the user probably
just deleted / renamed / moved them around.
+FileRemoveDir, %A_ProgramsCommon%\Freenet%_InstallSuffix%, 1
+FileDelete, %A_DesktopCommon%\Browse Freenet%_InstallSuffix%.lnk
+
+Progress, 4
+
+;
+; Remove registry edits
+;
+Progress, , Removing registry modifications...
+
+RegDelete, HKEY_LOCAL_MACHINE, SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\SpecialAccounts\UserList, Freenet%_InstallSuffix%
+RegDelete, HKEY_LOCAL_MACHINE,
SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Freenet%_InstallSuffix%
+
+Progress, 5
+
+;
+; Remove our custom user
+;
+Progress, , Removing custom user...
+
+FileInstall, files_bundle\RemProf.exe, %A_WorkingDir%\RemProf.exe
; Extract 3rd party "RemProf" tool from
http://www.ctrl-alt-del.com.au/CAD_TSUtils.htm. Freeware, but not open-source
:(. Removes the profile folder and its registry entry of specified user
+RunWait, %A_WorkingDir%\RemProf.exe Freenet%_InstallSuffix%, , Hide
UseErrorLevel
+FileDelete, %A_WorkingDir%\RemProf.exe
+
+RunWait, %comspec% /c "net user Freenet%_InstallSuffix% /delete", , Hide
UseErrorLevel
+
+Progress, 6
+
+;
+; Done!
+;
+Progress, Off
+MsgBox, 64, Freenet uninstaller, Freenet has been uninstalled! ; 64 = Icon
Asterisk (info)
+
+If (_DoSurvey)
+{
+ Run, http://freenetproject.org/uninstall.html, , UseErrorLevel
+}
+
+Exit()
+
+;
+; Helper functions
+;
+PopupErrorMessage(_ErrorMessage)
+{
+ MsgBox, 16, Freenet uninstaller error, %_ErrorMessage% ; 16 = Icon
Hand (stop/error)
+}
+
+Service_State(ServiceName)
+{
+ ; Return Values:
+ ; -4: Service not found
+ ; -1: Service could not be queried
+ ; 1: SERVICE_STOPPED (The service is not running)
+ ; 2: SERVICE_START_PENDING (The service is starting)
+ ; 3: SERVICE_STOP_PENDING (The service is stopping)
+ ; 4: SERVICE_RUNNING (The service is running)
+ ; 5: SERVICE_CONTINUE_PENDING (The service continue is pending)
+ ; 6: SERVICE_PAUSE_PENDING (The service pause is pending)
+ ; 7: SERVICE_PAUSED (The service is paused)
+
+ SCM_HANDLE := DllCall("advapi32\OpenSCManagerA"
+ , "Int", 0 ;NULL for local
+ , "Int", 0
+ , "UInt", 0x1) ;SC_MANAGER_CONNECT (0x0001)
+
+ if !(SC_HANDLE := DllCall("advapi32\OpenServiceA"
+ , "UInt", SCM_HANDLE
+ , "Str", ServiceName
+ , "UInt", 0x4)) ;SERVICE_QUERY_STATUS (0x0004)
+ result := -4 ;Service Not Found
+
+ VarSetCapacity(SC_STATUS, 28, 0) ;SERVICE_STATUS Struct
+
+ if !result
+ result := !DllCall("advapi32\QueryServiceStatus"
+ , "UInt", SC_HANDLE
+ , "UInt", &SC_STATUS)
+ ? False : NumGet(SC_STATUS, 4) ;-1 or dwCurrentState
+
+ DllCall("advapi32\CloseServiceHandle", "UInt", SC_HANDLE)
+ DllCall("advapi32\CloseServiceHandle", "UInt", SCM_HANDLE)
+
+ return result
+}
+
+Service_Stop(ServiceName)
+{
+ SCM_HANDLE := DllCall("advapi32\OpenSCManagerA"
+ , "Int", 0 ;NULL for local
+ , "Int", 0
+ , "UInt", 0x1) ;SC_MANAGER_CONNECT (0x0001)
+
+ if !(SC_HANDLE := DllCall("advapi32\OpenServiceA"
+ , "UInt", SCM_HANDLE
+ , "Str", ServiceName
+ , "UInt", 0x20)) ;SERVICE_STOP (0x0020)
+ result := -4 ;Service Not Found
+
+ if !result
+ result := DllCall("advapi32\ControlService"
+ , "UInt", SC_HANDLE
+ , "Int", 1
+ , "Str", "")
+
+ DllCall("advapi32\CloseServiceHandle", "UInt", SC_HANDLE)
+ DllCall("advapi32\CloseServiceHandle", "UInt", SCM_HANDLE)
+
+ return result
+}
+
+Exit()
+{
+ global
+
+ If (A_IsCompiled)
; Only do the following if we are compiled... Just in
case a test session goes wrong.
+ {
+ ; Request a self-destruct at next reboot (... because we can't
delete a running executable)
+ DllCall("MoveFileEx", "Str", A_ScriptFullPath, "Int", 0,
"UInt", 0x4)
+ DllCall("MoveFileEx", "Str", A_ScriptDir, "Int", 0, "UInt", 0x4)
+ }
+
+ ExitApp
; Bye Bye
+}
Added: trunk/apps/wininstaller/src_freenetinstaller/files_bundle/Ntrights.exe
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/Ntrights.exe
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/apps/wininstaller/src_freenetinstaller/files_bundle/RemProf.exe
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/RemProf.exe
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added:
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/jre-online-installer.exe
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/jre-online-installer.exe
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/apps/wininstaller/src_freenetinstaller/files_bundle/netuser.exe
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/files_bundle/netuser.exe
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added:
trunk/apps/wininstaller/src_freenetinstaller/files_install/LICENSE.Freenet
===================================================================
--- trunk/apps/wininstaller/src_freenetinstaller/files_install/LICENSE.Freenet
(rev 0)
+++ trunk/apps/wininstaller/src_freenetinstaller/files_install/LICENSE.Freenet
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,280 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
Added:
trunk/apps/wininstaller/src_freenetinstaller/files_install/LICENSE.Mantissa
===================================================================
--- trunk/apps/wininstaller/src_freenetinstaller/files_install/LICENSE.Mantissa
(rev 0)
+++ trunk/apps/wininstaller/src_freenetinstaller/files_install/LICENSE.Mantissa
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,35 @@
+Copyright (c) 2001-2004, Luc Maisonobe
+All rights reserved.
+
+Redistribution and use in source and binary forms, with
+or without modification, are permitted provided that
+the following conditions are met:
+
+ Redistributions of source code must retain the
+ above copyright notice, this list of conditions and
+ the following disclaimer.
+ Redistributions in binary form must reproduce the
+ above copyright notice, this list of conditions and
+ the following disclaimer in the documentation
+ and/or other materials provided with the
+ distribution.
+ Neither the names of spaceroots.org, spaceroots.com
+ nor the names of their contributors may be used to
+ endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
Added:
trunk/apps/wininstaller/src_freenetinstaller/files_install/bin/wrapper-windows-x86-32.exe
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/files_install/bin/wrapper-windows-x86-32.exe
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/apps/wininstaller/src_freenetinstaller/files_install/freenet.ico
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/files_install/freenet.ico
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added:
trunk/apps/wininstaller/src_freenetinstaller/files_install/lib/wrapper-windows-x86-32.dll
===================================================================
(Binary files differ)
Property changes on:
trunk/apps/wininstaller/src_freenetinstaller/files_install/lib/wrapper-windows-x86-32.dll
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/apps/wininstaller/src_freenetinstaller/files_install/seednodes.fref
===================================================================
--- trunk/apps/wininstaller/src_freenetinstaller/files_install/seednodes.fref
(rev 0)
+++ trunk/apps/wininstaller/src_freenetinstaller/files_install/seednodes.fref
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,212 @@
+lastGoodVersion=Fred,0.7,1.0,1173
+sig=6833e9935c20a56f300990542a7238aab7e48b9310a66c5a28199fb7e9913864,35ae5401987cc9e6c6142295ee6dd40f7a572615b15563912ef529f0a127b6f1
+opennet=true
+identity=N8zHY30Cd4sPturui7nDb85UtQb4uMnmvTZiExnxoYM
+version=Fred,0.7,1.0,1173
+physical.udp=wing.pterodactylus.net:52434;89.207.253.12:52434;89.207.253.13:52434
+ark.pubURI=SSK at
skS0fLCTWmahKFZcz53mqNIMnQi0iF6g1bFoPiUHQr0,AbmNpSMTEhF1BU7FDwwKpiAFhE6W-n~5Rg6mSwOy-Hw,AQACAAE/ark
+ark.number=137
+dsaPubKey.y=OPCG-~YkwjEcbapMwqrbNGZaEGU2t~dRO82taZ4ICCeD437DYPWbBpN5uBmw59NLPavfUbBhs02-2Z99an-NxaooNHuUlww9bje6NwtR4boMSkgtsknUA54Bok~pZQD3n8pz1Do5pp~AXi8wnhmJGkM0y25yIpFTloQFX7ddCJSNpP-Z4kMUxb-OEDELhg1zDboedwCmrongeG1Pu95clR7UlnWD3ERc-1V1j9QXtB5N5rwKeo-chuiS2sl3MN5maYQY~NMgS-jAvixyrr652PwxhyLCa14AyBj58~nLFiFYNppDRSShs2FMSqwPVgSM4rMxqZHpwHwM0xLQ1zypkQ
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+auth.negTypes=2
+End
+opennet=true
+identity=CPKqfSzYRtTtLcJyUQoBZDGIR5-z8mWIZxDB1aNipnA
+lastGoodVersion=Fred,0.7,1.0,1121
+sig=1692108d3c5c3b1562752c210c30ceed3e307defbf7495daca7e25a6ae5611cd,0080268c2ce0abbddd567ab47ce72cebef75c15bf66b76ddfa46b9f68cb345140b
+version=Fred,0.7,1.0,1122
+dsaPubKey.y=Syf72tiIiK667BTjaP0z72~u74oNDKPgeJDX98W~~KqPvjG4MywlOmzr6JCja3XTbsD-Tj1Wor0Cp05-8Xvpc0YEpXYkTumJTGdadDNYUG-pfqLhTwqW6gl-XZmtfsjyEIS11r0pacJX9LK-JBjvwvoBJDwpEB9uTqGSNXTS41EtbuEPn-SlalfaZ-XUO3PBOXcBFt6d1HEgBDqPXXwMAfX54stXFliLm4NGX2~pj39KIaWcq3cBHFMUiQHjgJ8~rbAvrnS9KTgSvtZR3-DIMSUqrzp~1Dg5HObtk0BM57bYSotZzQO1bDPmOrLQBMybusz4XvasjznlY2thTuBjTQ
+physical.udp=2002:d07e:7504:1:29f3:f2a7:b0de:f91a:59226;2002:d07e:7504:1:250:2cff:fea2:44a0:59226;208.126.117.4:59226
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
FkQ3xeCM6wTkCMkZilzGwPPN2dZKGfOZ2dIiz5LY-ik,B~A5HWTT~akG3GLQj7rQEsmp3MMIJCX4QlrOrbTelVk,AQACAAE/ark
+ark.number=560
+auth.negTypes=2
+End
+opennet=true
+identity=iuczYLFP08YbSkSysArbq-aV9RzyNvv60wyRSvPGlvk
+lastGoodVersion=Fred,0.7,1.0,1173
+sig=027d1ce8b7057aab8af478b6c5b1e0f1902e8ccf003eadfd8e74576edb3f8308,1f081d888e15ab2b139bd1ef66bd24d66f20796e9a5bb491ffbf029d7e1f6b19
+version=Fred,0.7,1.0,1173
+dsaPubKey.y=HvWUD8GD1xef9qrZMLxNVQrBxZqu15azMYHhEw4To7ZTAzqQWqLC5UGeEQKjK7ntRN2Wapi3pnOCwczQUqFnb8moXCmyQxGCNay6FJyk8e1jYO3vkVduQcibD~Bq8m5URhTTk3NEpw0UqDvM6FOkH7XHQbinBDzr3r6P4FNLX4RPYodNEHW0e2QZMnglszuqVEoO1rlBzJf-KVY45PLW74uMaQAQZKeEteIyR5Q8DHSQUx26eO~XhW7I4BiQzujmsSDIBxhHSYcDRvGr0f2xw2yXpf7j0p3Zt4-r9T0OfPg5g-OY2ulRrbmKJwl6nLbuUaKN9dtqFxMAxFtU8SIsMw
+physical.udp=ermannob.mine.nu:43409;79.50.5.191:43409
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
db4F9BIbOAEP4-clY7gL4VfzKNeJI-l7oZ5uiyy5xf0,hRPKbiUPbPJdckrdkrm6CGsEhEEoZ6Rz-5S0fq6U6Fw,AQACAAE/ark
+ark.number=220
+auth.negTypes=2
+End
+lastGoodVersion=Fred,0.7,1.0,1164
+sig=3d1e17c60ca7df15f59e913e57fafe29ab01b1a894d49b47c162d2d9e3f74e65,75ff2961bd9af259be02de885c3baa4ce2c5b09837fa836cd2ee8c779594053a
+opennet=true
+identity=GzONz6V4S7aUxqYncG92BtrzYiFEbg~YlcAFOnQ6TIk
+version=Fred,0.7,1.0,1164
+physical.udp=82.236.88.127:53783
+ark.pubURI=SSK at
SLG5e2uvenllBpDiActjd6STdnEjO3NyBDNNc4KNKFM,OYex-IwZOAaxbb4V4Xa38wgahaRM~OwEBtH3tuiYu9U,AQACAAE/ark
+ark.number=137
+dsaPubKey.y=AIOgRfngeYDeHch33f4yOAYHnH4-Ordole3~SqOnzN8erIgf1nzzJEfM7T1BJsBcOq6ZebyRqoKn7ztelsgfe26ITWmY-Fj2bD23kpl6~llKRsMkgPX1V-M2ufn09MWYndQ-5APrBNpOG3s~30SnaIVpjlwgdjERzcJt27PBFJjEoq6d6xJmum69K9llx7LxKMHlgAlORhIuUxPA8odcGGDL-sJcKGF0IN5Zn2ExkZOLDIxiAbJa2n9zxkf9QU6AP7c1J5ztrPL1KGDgXledEWoeWPYs4PfoB0~hF-jI7YFEIXoCr7ad4XUt4I1RM2o7PFcTbdXfasLba65eQVSAmDc
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+auth.negTypes=2
+End
+opennet=true
+identity=1poRJ3zlDqedVcMyR5I7wcwG7QzznWCu-zHQ7RwS88w
+lastGoodVersion=Fred,0.7,1.0,1162
+sig=75f026da995ba25bf31bb192e0ec95e9a234df9ce550dcd9ab6e1f1df694e808,00aead3b2311176c18b393a5afbaee2c124f1056e88071edc2208252a63d12b7fe
+version=Fred,0.7,1.0,1163
+dsaPubKey.y=IU~uQm7ujsPuTeK~8E~CfH3JjCOZIZu-UbpPZQaRXWUuwtpbeSwuaT8apud7xgtVPgKFRuNnib5i9FHosbxrmz-z6FEcBwGIyFMa4zNSnV~PE~CeAs2t-Ym-cg5VeGxJQ-pleO7I5iXTiCGIVzwn60ADOvX2der3rDR9FOjMZ91Ms5m~rcDALc5dCEr5ZpXb-bAY3HO-Ad1oaHAcKVbkVMpSdr2oJR7StoT0rfmVw5S8oWR0yhPmzwFcJiG5upuqSPyY-eYoYfZHLLTu9XqZd~nJTPdnJ0Tj~-UKoDZ6Y890ONbpZ1YyiFRahQIs2G~fITOURxoxt9LI07O5A5K8jA
+physical.udp=64.68.161.157:49832
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
MEh2zlYOopaRszUFfpBe-qlI38pUESLanu4CxjKBy7o,AWa96tY18qCWFiK7Y4LvvLmBG~aiVfHDklMH9PtEefc,AQACAAE/ark
+ark.number=0
+auth.negTypes=2
+End
+opennet=true
+identity=qTgx4P79rd55jMkdYitMzCn3zmMR0vjOr1Xkw1ktbVE
+lastGoodVersion=Fred,0.7,1.0,1162
+sig=1fab7c5440966178a698eeee3f1a1901ce5f2badf9ea3f435d5025fb39c45eea,00aec453acf0a4d8b4023416b75ff3a7e985991864d2a327fb00db26383c2fdb6f
+version=Fred,0.7,1.0,1163
+dsaPubKey.y=C5HVzSRtHoM0eh53X53IqgqFg0a5EsiH-mwquRMqHN~KM8n6iM05UBrdzGQx90O9GBGYkyrfYUZaLWvDkiNICZkzniU5YfzEcYKeGABX38ZOgICJd1~ohBFfWxUKI3yV62jCzjNT-oYKFw3u29EiAJexwqZZYco-LvljTFMR5wUB~vOu6kMue3Dy2ubLE39~HGM6kyPzopiuvkP6nRaW3SgaFjt6v08Hwhn1Ftl0f8SrJiLCQ3~5Wi5mMrYwQ4CnZ-gvAdl3feDMpuIYfzf-eTaUgMskfHUXQIzWMZ~py9mM8MOiyx6n7lK3siDXIiRoMOWI8h0eXyLfmGGSUmBPcw
+physical.udp=chronos.kwain.net:41378;91.121.64.66:41378
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
DSOi7bcyin8RI6pue2NT82y60I6Oxj~aoolimffrUQE,TKdaUJGCX1jnktm3VZK0AXsqCQNM-ONY8cZ4I-4OJbE,AQACAAE/ark
+ark.number=523
+auth.negTypes=2
+End
+opennet=true
+identity=ocUH4sxyLuj2L14UKj8JeeOjCMedN7y4lITM6jWJxFs
+location=0.152043975892734
+testnet=false
+lastGoodVersion=Fred,0.7,1.0,1088
+sig=18b21ad53ce79d4eae6178ecf3a61fb8632c4b57016cd2fe7998ad9886a8acab,5d06ef0053cc86b13fbe964cda17064baee95d21c31f624f6defacf2fa4efb6a
+version=Fred,0.7,1.0,1089
+dsaPubKey.y=bAKfwrZumx6NNQohezlRBOrKNSJ6Y33xRcdHYo1XwnGf9IDW8NfjPDv7fImvPO-YRONDg~MVx3BtmRUvg-3~qIfY5x9m7I25t8jHuVVg0d1LlcZPuK~NXdOqTPHH-T5suIjlkfZBkBWR5ZgHwT3VI-siGuCDPREiFy10huRUnJJogNfIUfmdm~CoiNA~kka5js795oDTx2E7kXOQQtpbI0cRjd-WZ2zV59HPsJ6pSXUoAqvl5rS7GW1Z1tPSH44pepKR3LYgU8H4m0q5VEQCEN1GIArxLcw1Ry-EXYBAB5TmrYu2~GcLVsGVRyUmKExWlkeq-ElLGdvVeE4kI4egMg
+physical.udp=juicedeuce.dyndns.org:8476;71.205.60.91:8476
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK@~U22YNcaufxK-HQugW8VKyb4nqZryTJc9nIGt6LPFyg,nVMFx~aLaoPp4BzAfRyHUkZKkz5XD~my9gX-ByRSSw4,AQACAAE/ark
+ark.number=49
+auth.negTypes=2
+End
+opennet=true
+identity=BlGJfBP25SMBvUn1qh6D1BhCcm9H73Psch1ly-KqgGg
+lastGoodVersion=Fred,0.7,1.0,1154
+sig=78d5c85377c5ebe0e0c4a0b3943bea7fba71f88155753dd5d6e3ad051c5f53c8,0084c1f197e3c41cc3c614e1d9c323faebab21c3403e21886c06c9fc5e38b6c83c
+version=Fred,0.7,1.0,1155
+dsaPubKey.y=Zka21au2DtD-aelGO3pIsna-2fKyogsLPIx34bhteNG~oXkwMQUxOA7VrvRgyhXgVvNqSbX21ryzcgn1g-FJNF9lUM60WMKZ~q4CaMQRwbihu2-LsPNO9KxCB5Ha2ZObSGeFUgXHIsmec1uvnh3twsFUJiqCmIXPusfXD~fx7qKA813Ew5gnnnECtpLJQrl-SfKPG8ZwU0gxLBJcbFuPHaIkGbWHVzrYyuCDfnkbmIZSNVmMs5zzPs6mU6P5MvMfkzKRqOxf7JGbA4hcfZPIDNsQg-~dRh4m-~5~fk6l3pYHJ569ZUO~2F2~Lu6YAKht5nkrEfy2zDJOAB-bQentrA
+physical.udp=91.121.72.107:10000
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
z68G1L9RnWcQUlvJPRp7jb0yweWg~WcJJH9h4IDCsRY,qmUxDj0Un9L9g4LL8T7ouXkZM8vTUfU-KU9aY9nR~jI,AQACAAE/ark
+ark.number=0
+auth.negTypes=2
+End
+opennet=true
+identity=Fi3RUkkdKxhHXWR5iz82W-lNLJMYawEu108d0enieAA
+lastGoodVersion=Fred,0.7,1.0,1154
+sig=0088146786096d74411d8f78235a102a47140b60b9fba226b87508ac9f21da6fa1,00aa3fb6096960452d4b400d1fce57be9120592bfe60faa4b178ec7f61abce910b
+version=Fred,0.7,1.0,1155
+dsaPubKey.y=bT3P86ddluy5~eS6C7DpCvFUuEwJ8D-tc2Vg6mBrsc~ZWtEA~8YEaO9dip9-G5qnjgpqH9Ka~mc07RJTp8w7StSmt~7K6Oahw0fhrtxSeglfxOcVXe5Wb762uA3fnZgROU7hLJ0h9yTrlAv1lC48kOGwOL~YQKJqlHPPGARnjOzb2XFsW6EFBjP5hkYyr-Xq9qrYgowh6roZTDGm9gECcyoBTNq4foPGwTYgloSkOBZcXRlbeJCUHtQWpRjH~J~iCyE7JZKke4TIEPmxe1sFPaySh0elrx9XOpJDmJTIlXWEGTHxwzBw-ziaGeMwCDLENbS~7~YvQ8R5bnKaxX9ukg
+physical.udp=134.108.47.4:3329
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
QPR916YKLIFKCHmhwchNhEIL9B4E7ZmYLQG1fqDTsw8,auO1wewuYcYLOkBH7OFREcupWT6PvTCD0EHK5ylm3Hc,AQACAAE/ark
+ark.number=0
+auth.negTypes=2
+End
+opennet=true
+identity=W6a~FWP-ZWgNqjnByqyp2vYz96eNTOwoVqnTbCSz6AE
+lastGoodVersion=Fred,0.7,1.0,1145
+sig=008c7da929eba8aa4507f5804f90f21031460cdf5c218bc0f3e8adac8b682f1265,00a5be473c4953803b558c329b5383cf66ccd5c9c9f2b08b7ff324ef1a55012409
+version=Fred,0.7,1.0,1149
+dsaPubKey.y=bLXooM-VuLUWk1VFGZcC2KRBtsks8OieBILvtBUNw44YMN5OJ0ZOJG-XKeNVYf0n4FwcBMwRzZXgeUteBR3~szUGn7rX1k7zkxBCOBgOym~7fg3AJo6lCp3LZmrcmre4NIbk0eIwzIae6BoJ-IglRdFFlF6fRbiK2Ut8s3QvCuqPaoKyvsJzFmjtCupvd3Q15Io2F1pXe6oH19drb8wMoxfmMtZB41FlAGuFmGKcuB9fkZSJTpq8-PxMuvDDcn-nqj4BpGpG4exzLjpvbgPfOhvtbZ1JrQEOvEzu-DcmyqmUAFYERZadH9rSjQk1v8y8aGRmmGobbAjyZrxM0dr48Q
+physical.udp=ice.tessier-ashpool.net:2845;216.231.47.14:2845
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
zfvC8dESmPUrPmNn8rl7MkrV7KQ8FXwz2AfGsmOsvyg,4OsXsuRzPkKvBgdOobOh~uQrSx4xyuZ4C4t0psKYYjM,AQACAAE/ark
+ark.number=203
+auth.negTypes=2
+End
+opennet=true
+identity=9gr2XatQxVEiWxLHtEt3W09hlwxp5VBxl6TgYutUpn0
+lastGoodVersion=Fred,0.7,1.0,1145
+sig=3b4ea3bf078f65aac78184d1102d19494da39fb9f8d5900ef54f100e5eb9666d,008a24f542d6c99462f6aac7a926968acd5948a1a36c510d71cd51c0d453e7a810
+version=Fred,0.7,1.0,1148
+dsaPubKey.y=a-xVU0VQPJySe1xuaEn-DLWjSIOa~gC67zDE6lGKsLCw1EQl8SyBtAg3F4g3NBkaKtvuir6d8waL824RPJTy3oz4pwwUkmAicpr8FO9Zc7sgvXLPmv7y~vCEydh~fkmHRpvdErdnVTD16JyK5Z8AHWl2bTVT9PxWp9m7EWRI4EOIreX4AS3kABfOOldMT9e7lWBlsHx8WLeiIOraXdHnv47Fsk8FQman0oaugabc5fYjLG2~ANsSmstbFwG1LBZR4upETTFJa-4JV-CKRDLkKZQsscljc37Gn~Wby1LNx9FhMNF9OcqoPL4a-pZiwVZnDALMtlhy6j~g9WZiuc2irQ
+physical.udp=91.121.139.75:48124
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
nHxjDdOVIpDQXnMnjadZ2i~rqwBtJVXUFUZAFn-GWMc,g4aa-v64J140TLExBV2jhB7rdA5MFQVwVM3W-dRgYjY,AQACAAE/ark
+ark.number=2
+auth.negTypes=2
+End
+opennet=true
+identity=scSss88ZqEdEtzohkdDwkwA9xyFYnq6eOPlh~h3Ku6A
+lastGoodVersion=Fred,0.7,1.0,1195
+sig=69c387f408ac76eb11f0d99a1ef3ace9040bd8b2d4cd2d2859358e06f6f2dda9,03050a3c657a3b60b7fdddd787686e9bd6c4af96fdbef321b1c48aab20611be3
+version=Fred,0.7,1.0,1195
+dsaPubKey.y=Qxd0xFYkk2g9G~PmzPSC~-qgubyg5FjvSsg4U4I9rVsgBdpY51IVmK04IYmCU-GpEGHGuuuZxcJ91HkCZiT9oZa0w2JxuObzQVm2ZjJ3mvxpD0GfkMddDT69MXaCNBkLkhe8yFrtVEpr37Kv9G34Qob7oVesnzNcqwNqag7YlaOveHFb6UuL8Y2UVqVOzd4l47C6jB6UfDoHSDzqzhNiLJsZ04OSEgqClsx2wxQDaeHgqBACxIPrgMHh~EfDdG--hNh~IesafSKVa6gxNVJcqea4x-j2iajgIwnrecb~hbTZkFSkDhjC4AL4M~Ns81XrYUDfw-HbW6TWLX-nfGK2aQ
+physical.udp=amphibian-servalan.dyndns.org:37024;91.85.203.227:37024
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
ag0hHH8lGnAnPiNUfj8u2O2pU8JiGE~tOKsJ-5WLvXQ,NRbO~lYOW8p1fvUNQNjikjvU1fcJPkuxQHY3~hw8P7w,AQACAAE/ark
+ark.number=284
+auth.negTypes=2;4
+End
+lastGoodVersion=Fred,0.7,1.0,1162
+sig=21ac2a1dffcdd4499378059d53a6dde41fd56d7f32d97b522903785994d97a8f,29d3001f9966d88f0a20ca35edde20e0a0560ba7cac08b6f6bbfb2f6a075d027
+opennet=true
+identity=6W8b11Iy5jjW2WmLN-wQIPcwnzHLdsrKDTbpO2nbQoA
+version=Fred,0.7,1.0,1162
+physical.udp=85.14.217.51:1286
+ark.pubURI=SSK at
ZiyMbzGNd09DCasOpcV7nSdsd99EyCS6ETU1hHmbH0k,i7Qi1zl-MpkiWg7MtouORGZsXaGx0wkDswG-DAmU3s8,AQACAAE/ark
+ark.number=24
+dsaPubKey.y=fAkSEP5sc4QwSD9OhES1jxJ8PqnUIMaCCJ6Rdl8uHtYKv2jDTlBrhnxs7Waxpowtxjeuk~GMkq-AoJkHbtfqMfe1otpTRO6l0zDGpkkw1MCxSGGcHPAb2WD1XVicixuIS~qdyRCDl~odaT2yQVASUC9nQEsurON7~ZhIsVMC18nV05f0BL4Z4clI-9w2FWaVbJVCjbnUJAEvErD4~yFvJ9z1EYFEjSDycKFQn9Lyj8czjv7UaInsRgJYm-5S-xoCjytVJ328Co8C71PvyhXElDyt03odA2MWfQEsi2NDBY90kY1zKV7u6366~e~AxZ0uuu5M8NG0wKHbaOND2xOMKA
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+auth.negTypes=2
+End
+lastGoodVersion=Fred,0.7,1.0,1139
+sig=4beb482379c9bbc5123ecf07b32a493a07cd3fbfd8468a4f9c6ff1f36dfa352c,29501f869e656f19f62eae94b8d127410918480d3db48cde5cfe91893f968a60
+opennet=true
+identity=1Oet5xg3icnnurZ4Z6ytrYGdjWng5jnXxY1G~ATNVUw
+version=Fred,0.7,1.0,1139
+physical.udp=24.80.101.100:16145;fe80:0:0:0:2a0:c9ff:fe93:2534%2:16145;192.168.1.22:16145;0:0:0:0:0:0:0:1%1:16145;127.0.0.1:16145
+ark.pubURI=SSK at
2AuJHjM3mYdP-MRwOmxV5EW0IMtxZRYVyb1UOynYcMQ,pV5Ssq9~uQrdWYWMKkTN7htNcu~BexMiSOSX6Q6Tzj4,AQACAAE/ark
+ark.number=126
+dsaPubKey.y=OeHRxc~wOw8dnsU4yfw6paOnyfsXm89xqnIwRAJEb8K7XcQRzusz9XOxLCF75ZA1p0xphTiEbtSCAMTV0oOZNsjDYeiKS0r3yS2MKV8nQIiSQBHhXZoKtUu0qzgqaaH1vu0jMWpDv~HdjACKYkR8i-Nlr7~X7da8hI6VEJY6aNjav~ZHQLlELlAPgCWRtF70yDXBEkBQiZgnucNcaQXnqy7SLKAscUaBWH9mBaa03zZFHxFRnvnLOG89hirb8FYf-WcDA4L-5Cz4QgrlWTbFVcQp9D10NmbEu~swqaqqayIii3RBT0o2nuq9gob7O0TEzH0dZ2rz8F5xz1yT1Jnm3w
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+auth.negTypes=2
+End
+opennet=true
+identity=1sSXpUavFUUGgB8cU6WD8aufzrTh0rRsSQaEdGDpNOY
+lastGoodVersion=Fred,0.7,1.0,1163
+sig=451225b8396f33b5c97f8d2cdca802e24d569c7e622aa97de34d8aedde48c397,56d8024dcf126570a634b01892da0e7734fef18ee8be6afdbc0fb4f458c3f663
+version=Fred,0.7,1.0,1164
+dsaPubKey.y=CPubFjxFyNWzuRwlwnW8cf3aoaoBMi-Rn1rkKKtCbcyt5XZ2o6cJp6OeybnwWG0yL-URC4K6wJfbJhT92mw9biQwudRq7uaa9TzcPVHlsHLDTSBtyViqis8hkaIX3e2ScgH9yt1o7bvEzNpvD5XmiwvkpRKT5p2reJDYBQait1tDJNkTjaFtnwm0xZONdKDOrsGkayd0SNinGmNWeRhWLV22NUZSmzz7nYJHbE2-~pjLRiogbV0u44zVeVmxtV6vZYpjULJJ3-YeK6szrJIL3vdFP~CuVGpAWENSghk41EiwOMsynJigwHVx1MvtatXAfowno0vs7i4OK7HrGOf0Qg
+physical.udp=plukh-home.dyndns.org:14387;81.200.127.201:14387
+dsaGroup.g=UaRatnDByf0QvTlaaAXTMzn1Z15LDTXe-J~gOqXCv0zpz83CVngSkb--bVRuZ9R65OFg~ATKcuw8VJJwn1~A9p5jRt2NPj2EM7bu72O85-mFdBhcav8WHJtTbXb4cxNzZaQkbPQUv~gEnuEeMTc80KZVjilQ7wlTIM6GIY~ZJVHMKSIkEU87YBRtIt1R~BJcnaDAKBJv~oXv1PS-6iwQRFMynMEmipfpqDXBTkqaQ8ahiGWA41rY8d4jDhrzIgjvkzfxkkcCpFFOldwW8w8MEecUoRLuhKnY1sm8nnTjNlYLtc1Okeq-ba0mvwygSAf4wxovwY6n1Fuqt8yZe1PDVg
+dsaGroup.q=ALFDNoq81R9Y1kQNVBc5kzmk0VvvCWosXY5t9E9S1tN5
+dsaGroup.p=AIYIrE9VNhM38qPjirGGT-PJjWZBHY0q-JxSYyDFQfZQeOhrx4SUpdc~SppnWD~UHymT7WyX28eV3YjwkVyc~--H5Tc83hPjx8qQc7kQbrMb~CJy7QBX~YSocKGfioO-pwfRZEDDguYtOJBHPqeenVDErGsfHTCxDDKgL2hYM8Ynj8Kes0OcUzOIVhShFSGbOAjJKjeg82XNXmG1hhdh2tnv8M4jJQ9ViEj425Mrh6O9jXovfPmcdYIr3C~3waHXjQvPgUiK4N5Saf~FOri48fK-PmwFZFc-YSgI9o2-70nVybSnBXlM96QkzU6x4CYFUuZ7-B~je0ofeLdX7xhehuk
+ark.pubURI=SSK at
gQl2Qd9QVUJv8wjtXug76gJqUNsOVLJhmoYAVF8ujLU,fS-AKxTvs-iYyS~9azYjkRqxg~7NdjFp208xCONYGOM,AQACAAE/ark
+ark.number=15
+auth.negTypes=2
+End
Added: trunk/apps/wininstaller/src_freenetinstaller/files_install/startssl.pem
===================================================================
--- trunk/apps/wininstaller/src_freenetinstaller/files_install/startssl.pem
(rev 0)
+++ trunk/apps/wininstaller/src_freenetinstaller/files_install/startssl.pem
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,44 @@
+-----BEGIN CERTIFICATE-----
+MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEW
+MBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwg
+Q2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0NjM2WhcNMzYwOTE3MTk0NjM2WjB9
+MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMi
+U2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMgU3Rh
+cnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
+A4ICDwAwggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZk
+pMyONvg45iPwbm2xPN1yo4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rf
+OQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/C
+Ji/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/deMotHweXMAEtcnn6RtYT
+Kqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt2PZE4XNi
+HzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMM
+Av+Z6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w
++2OqqGwaVLRcJXrJosmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+
+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3
+Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVcUjyJthkqcwEKDwOzEmDyei+B
+26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT37uMdBNSSwID
+AQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
+FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9j
+ZXJ0LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3Js
+LnN0YXJ0Y29tLm9yZy9zZnNjYS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFM
+BgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUHAgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0
+Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRwOi8vY2VydC5zdGFy
+dGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYgU3Rh
+cnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlh
+YmlsaXR5LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2Yg
+dGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFp
+bGFibGUgYXQgaHR0cDovL2NlcnQuc3RhcnRjb20ub3JnL3BvbGljeS5wZGYwEQYJ
+YIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBGcmVlIFNT
+TCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAgEAFmyZ
+9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8
+jhvh3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUW
+FjgKXlf2Ysd6AgXmvB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJz
+ewT4F+irsfMuXGRuczE6Eri8sxHkfY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1
+ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3fsNrarnDy0RLrHiQi+fHLB5L
+EUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZEoalHmdkrQYu
+L6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
+yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuC
+O3NJo2pXh5Tl1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6V
+um0ABj6y6koQOdjQK/W/7HW/lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkySh
+NOsF/5oirpt9P/FlUQqmMGqz9IgcgA38corog14=
+-----END CERTIFICATE-----
Added: trunk/apps/wininstaller/src_freenetinstaller/files_install/wrapper.conf
===================================================================
--- trunk/apps/wininstaller/src_freenetinstaller/files_install/wrapper.conf
(rev 0)
+++ trunk/apps/wininstaller/src_freenetinstaller/files_install/wrapper.conf
2009-01-22 15:13:07 UTC (rev 25210)
@@ -0,0 +1,44 @@
+wrapper.java.command=java
+wrapper.working.dir=../
+wrapper.java.mainclass=freenet.node.NodeStarter
+wrapper.java.classpath.1=freenet.jar
+wrapper.java.classpath.2=freenet-ext.jar
+wrapper.java.library.path.1=lib
+wrapper.java.initmemory=60
+wrapper.java.maxmemory=128
+wrapper.java.additional.1=-Dnetworkaddress.cache.ttl=0
+wrapper.java.additional.2=-Dnetworkaddress.cache.negative.ttl=0
+wrapper.java.additional.3=-enableassertions:freenet
+# You might want to set the following line if you have changed java.maxmemory
+# wrapper.java.additional.4=-XX:MaxPermSize=
+wrapper.app.parameter.1=freenet.ini
+wrapper.console.format=PM
+wrapper.console.loglevel=INFO
+wrapper.logfile=wrapper.log
+wrapper.logfile.format=LPTM
+wrapper.logfile.loglevel=INFO
+wrapper.logfile.maxsize=2M
+wrapper.logfile.maxfiles=3
+wrapper.syslog.loglevel=NONE
+wrapper.console.title=Freenet
+wrapper.jvm_exit.timeout=120
+wrapper.restart.reload_configuration=TRUE
+wrapper.filter.trigger.1=java.lang.OutOfMemoryError
+wrapper.filter.action.1=RESTART
+
+# Description of the service
+wrapper.ntservice.description=Freenet background service
+
+# Service dependencies. Add dependencies as needed starting from 1
+wrapper.ntservice.dependency.1=
+
+# Mode in which the service is installed. AUTO_START or DEMAND_START
+wrapper.ntservice.starttype=AUTO_START
+
+# Allow the service to interact with the desktop.
+wrapper.ntservice.interactive=false
+
+wrapper.ntservice.process_priority=BELOW_NORMAL
+
+# Start services with a different user than SYSTEM
+# SEE
http://wrapper.tanukisoftware.org/doc/english/prop-ntservice-account.html
BEFORE PROCEEDING !