Windows-Installer: optional auf D: ?

Ideen und Vorschläge sind willkommen.

Windows-Installer: optional auf D: ?

Beitragvon Orbiter » Mo Feb 14, 2011 11:27 am

Hierbei geht es darum dass es nicht sinnvoll ist, YaCy auf C: zu installieren wenn dort eh nicht mehr genügend Platz ist.
Daher die Frage:
- könnte der Installer auch YaCy auf D: installieren (unter D:\yacy\)?
- kann der Installer unter C: nachgucken ob dort genügend Platz ist (z.B. 30GB), ein D: mit genügend Platz existiert und dann einen Dialog zeigen ("unter C: nicht genügend Platz, auf D: installieren")?

Es geht hierbei darum dass eine Installationsanleitung einfach wird, und damit die Hemmschwelle YaCy zu installieren gesenkt wird.
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Windows-Installer: optional auf D: ?

Beitragvon Lotus » Mo Feb 14, 2011 4:12 pm

Ist eine gute Idee, und bestimmt möglich. Werde ich mir mal vornehmen.
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: Windows-Installer: optional auf D: ?

Beitragvon Orbiter » Mo Feb 14, 2011 5:18 pm

oh superdupergut!
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » Do Feb 17, 2011 5:39 pm

So, die Lösung für das Problem:

build.nsi wie folgt ergänzen:
Code: Alles auswählen
Section "YaCy"
---> AddSize xxxxxx <----

Mit AddSize kann man vorgeben, wieviel Platz ("xxxxx") in KB zusätzlich zu den zu installierenden Dateien vorhanden sein muss. Der Installer prüft das und sucht dann automatisch ein passendes Laufwerk. Es kann auf kein Laufwerk installiert werden, das nicht ausreichend Platz bietet. Der Wert sollte oberhalb 3000000 (3GB) liegen, da unterhalb dieses Wertes kein Crawling (default-Wert aus yacy.init) stattfindet.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon Orbiter » Do Feb 17, 2011 5:48 pm

SO einfach?? :o
Was ist wenn gar kein Laufwerk genügend Platz hat?
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » Do Feb 17, 2011 5:56 pm

Ja, so einfach. Wenn kein Laufwerk ausreichend Platz bietet, ist keine Installation möglich. Deshalb sollte der Wert sinnvoll gewählt werden. Ich denke, 5-10 GB sollten schon drin sein. Sonst macht der Betrieb von Yacy auch keinen Sinn - es sollen ja auch noch ein paar GB übrig bleiben.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon Orbiter » Do Feb 17, 2011 6:07 pm

kann man da denn eine Meldung dran machen 'du hast zu wenig Platz für eine Installation', oder kommt das sowieso automatisch?
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » Do Feb 17, 2011 6:39 pm

Das wird unten in der Ecke dargestellt und der Install-Button wird dann inaktiv.
Dateianhänge
space.png
space.png (29.86 KiB) 3614-mal betrachtet
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » So Feb 20, 2011 12:50 pm

Taugt diese Lösung nun etwas oder wie soll es konkret aussehen?
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon Orbiter » So Feb 20, 2011 2:43 pm

ich finde das gut aber noch besser wäre es wenn es eine 'weichere' grenze über eine empfohlene mindestgröße gäbe, so dass der installer sich nicht verweigert wenn dann doch nicht genügend platz da ist.

gibt denn die möglichkeit dem installer einfach die größte partition per default zuzuweisen und ansonsten keine grenze zu setzen?
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » So Feb 20, 2011 7:41 pm

Folgende Funktion sucht die Festplattenpartition mit dem meisten freien Platz und setzt dann das vorgegebene Installationsverzeichnis auf "Laufwerk:\Yacy". Wenn keine Festplattenpartition gefunden wird, wird als Pfad "Userprofil\Yacy" wie bisher verwendet.

Code: Alles auswählen
!include "FileFunc.nsh"

Function .onInit
   Var /GLOBAL DRIVE
   Var /GLOBAL DRIVEFREE
   StrCpy $DRIVE "NONE"
   ${GetDrives} "HDD" "GetMaxFreeDrive"
   StrCmp $DRIVE "NONE" SetDefault SetMaxFree
   SetDefault:
      StrCpy $InstDir "$PROFILE\YaCy"
      goto EndSetDrive
   SetMaxFree:
      StrCpy $InstDir "$DRIVEYacy"
   EndSetDrive:
FunctionEnd

Function GetMaxFreeDrive
   Var /GLOBAL TMPDRIVEFREE
        StrCmp $DRIVE "NONE" FirstRun AnotherRun
   FirstRun:
      StrCpy $DRIVE $9
      ${DriveSpace} $DRIVE "/D=F /S=M" $DRIVEFREE   
      Goto EndRun
   AnotherRun:
      ${DriveSpace} $9 "/D=F /S=M" $TMPDRIVEFREE
      IntCmp $TMPDRIVEFREE $DRIVEFREE EndRun EndRun FoundMoreFree
      FoundMoreFree:
         StrCpy $DRIVE $9
         StrCpy $DRIVEFREE $TMPDRIVEFREE
   EndRun:
   Push $0
FunctionEnd
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon Orbiter » So Feb 20, 2011 8:20 pm

cool!! .. aber
- gesharte laufwerke sind da nicht dabei? Sollten nicht, das will bestimmt niemand.
- wenn dann C: raus kommt kann es dann nicht C:\yacy sein sondern der ganz normale Pfad im Home-Verzeichnis wie bisher?
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » Mo Feb 21, 2011 6:29 pm

So, der letzte Feinschliff. Ich hab noch die Erkennung für das Profil-Laufwerk ergänzt. Bereits vorher wurden nur physikalisch vorhandene Festplattenpartitionen berücksichtigt - Netzlaufwerk sind bei der Erkennung außen vor.

Ich werd mich dann mal an die Autostart-Option machen. Die Firewall-Option wird komplizierter, da muss ich mich erstmal belesen.

Code: Alles auswählen
!include "FileFunc.nsh"
Function .onInit
   Var /GLOBAL DRIVE
   Var /GLOBAL DRIVEFREE

   StrCpy $DRIVE "NONE"

   ${GetDrives} "HDD" "GetMaxFreeDrive"
   
   StrCmp $DRIVE "NONE" SetDefault
   
   Var /Global PROFILEDRIVE
   StrCpy $PROFILEDRIVE $PROFILE 3
   
   StrCmp $DRIVE $PROFILEDRIVE SetDefault
   
      StrCpy $InstDir "$DRIVEYacy"
      Goto EndSetDrive

   SetDefault:
      StrCpy $InstDir "$PROFILE\YaCy"

   EndSetDrive:
FunctionEnd

Function GetMaxFreeDrive
   Var /GLOBAL TMPDRIVEFREE
        StrCmp $DRIVE "NONE" FirstRun AnotherRun
   FirstRun:
      StrCpy $DRIVE $9
      ${DriveSpace} $DRIVE "/D=F /S=M" $DRIVEFREE   
      Goto EndRun
   AnotherRun:
      ${DriveSpace} $9 "/D=F /S=M" $TMPDRIVEFREE
      IntCmp $TMPDRIVEFREE $DRIVEFREE EndRun EndRun FoundMoreFree
      FoundMoreFree:
         StrCpy $DRIVE $9
         StrCpy $DRIVEFREE $TMPDRIVEFREE
   EndRun:
   Push $0
FunctionEnd
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon Lotus » Mo Feb 21, 2011 6:38 pm

Autostart muss nur auskommentiert werden. Da fehlt eher ein grundlegendes Konzept wie das Standard-YaCy sauber beendet werden kann.

Der Grund wieso YaCy ins Home-Verzeichnis des Users installiert wird ist der, dass dort immer Zugriffsrechte bestehen. Historisch wurde YaCy nach Programme installiert, wo es seit Windows Vista irgendwie stört. Eine Warnung wenn dort nicht genügend Speicher vorhanden ist wäre wohl besser. So kann der User selbst wählen. Ich sehe mir das Script an, PCA. Danke!
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: Windows-Installer: optional auf D: ?

Beitragvon Lotus » Mo Feb 21, 2011 8:06 pm

Habe das Script eingebaut und getestet.

InstallDirRegKey wird dadurch unwirksam (installiert an den Ort wo YaCy schon liegt, betrifft User, die mit einer Exe updaten)
Die Kommandozeilenoption /D="<Ort>" sollte auch noch erhalten bleiben (nicht getestet)
USB-Festplatten könnten auch erkannt werden.

Ich würde daher besser eine Warnung bei zu wenig Platz anzeigen.
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » Mo Feb 21, 2011 8:11 pm

Gut, dann muss ich mal schauen, wie ich in die Ablaufsteuerung des Installers komme, sprich nach der Auswahl des Verzeichnisses ein Stück Skript einbauen kann. Dazu habe ich mich bisher nicht belesen, werde ich dann aber jetzt tun....
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon Orbiter » Di Feb 22, 2011 12:46 am

mir ist auch noch aufgefallen dass wenn man den windows-Installer benutzt um YaCy über eine existierende YaCy installation drüberzukopieren dann gar nichts mehr funktioniert hat. D.h. bei jedem Starten lief ein neuer Java Prozess, aber das Webinterface war nicht erreichbar.
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Windows-Installer: optional auf D: ?

Beitragvon Lotus » Di Feb 22, 2011 10:12 am

Orbiter hat geschrieben:mir ist auch noch aufgefallen dass wenn man den windows-Installer benutzt um YaCy über eine existierende YaCy installation drüberzukopieren dann gar nichts mehr funktioniert hat. D.h. bei jedem Starten lief ein neuer Java Prozess, aber das Webinterface war nicht erreichbar.

Kann ich nicht nachvollziehen, ist bei mir nicht der Fall. Mache ich auch regelmäßig bei Erweiterungen im Installer.
Der Installer überschreibt in diesem Fall einfach die existierende YaCy-Installation und legt eine neue Verknüpfung an.
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: Windows-Installer: optional auf D: ?

Beitragvon Orbiter » Di Feb 22, 2011 10:47 am

ich hab in den task-manager geguckt ob überhaupt ein Prozess lief .. da waren dann mehrere drin. hab die manuell gekillt und dann wieder probiert .. mit gleichem Ergebnis: kein Prozess kam hoch.

Das Deinstallieren war dann auch widerspenstig weil der deinstaller sagte dass der prozess noch lief - er lief aber nicht. Der Deinstaller guckt offenbar nur nach dem pid File, denn als ich den weggemacht habe ging auch das Deinstallieren. Auf die Idee kommt aber sonst bestimmt keiner. Kann der Deinstaller da nicht weniger penibel sein?
Orbiter
 
Beiträge: 5796
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Windows-Installer: optional auf D: ?

Beitragvon Lotus » Di Feb 22, 2011 3:38 pm

Orbiter hat geschrieben:Das Deinstallieren war dann auch widerspenstig weil der deinstaller sagte dass der prozess noch lief - er lief aber nicht. Der Deinstaller guckt offenbar nur nach dem pid File, denn als ich den weggemacht habe ging auch das Deinstallieren.

Der prüft auf yacy.running.
Auf die Idee kommt aber sonst bestimmt keiner. Kann der Deinstaller da nicht weniger penibel sein?

javaw.exe kann eben jedes Java-Programm sein. Andere Ideen?
Lotus
 
Beiträge: 1699
Registriert: Mi Jun 27, 2007 3:33 pm
Wohnort: Hamburg

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » Mo Feb 28, 2011 8:25 pm

Lotus hat geschrieben:..... Ich würde daher besser eine Warnung bei zu wenig Platz anzeigen.

So, hat jetzt etwas gedauert. Die Doku für NSIS ist *grmllll*. Dafür habe ich nun begriffen, wie die Ablaufsteuerung im Installer funktioniert.

Schnipsel eins > Include für DriveSpace + Definition für freien Speicher
Code: Alles auswählen
!include "FileFunc.nsh"
!define SpaceNeedInGB "30"

Schnipsel zwei > Einhängen einer Funktion, die beim Verlassen der Verzeichnisauswahl läuft (Zeile 2)
Code: Alles auswählen
!insertmacro MUI_PAGE_COMPONENTS
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE CheckDriveSpace
!insertmacro MUI_PAGE_DIRECTORY

Schnipsel drei > Testfunktion für das gewählte Verzeichnis
Code: Alles auswählen
function CheckDriveSpace
   var /Global TempDrive
   var /Global TempDriveFree

; Check for Network-Folder

   StrCpy $TempDrive $InstDir 2
   StrCmp $TempDrive "\\" NetworkFolder NoNetworkFolder
   
   NetworkFolder:
; Stay on folder-selection if user wants to give another folder, else jump to next page because check drivespace for network folders is not possible this way

      MessageBox MB_ICONEXCLAMATION|MB_YESNO "Yacy should not be installed on a Network-Drive. Continue anyway?" IDYES NextPage
      Abort      

   NoNetworkFolder:

   StrCpy $TempDrive $InstDir 3
   ClearErrors
   ${DriveSpace} $TempDrive "/D=F /S=G" $TempDriveFree

; If DriveSpace fails for any reason -> jump ahead
   IfErrors NextPage

   IntCmp $TempDriveFree ${SpaceNeedinGB} EnoughSpace LowSpace EnoughSpace
   LowSpace:
      MessageBox MB_ICONEXCLAMATION|MB_YESNO "Yacy needs ${SpaceNeedinGB} GB free space. There are only $TempDriveFree GB left. Continue?" IDYES NextPage
      Abort
   EnoughSpace:
   NextPage:
functionend
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » Di Mär 01, 2011 4:32 pm

Ich hab den Teil für die Laufwerkserkennung nochmal überarbeitet. Nun werden "\\Netwerklauf" und Netzwerklaufwerke mit Buchstabe erkannt. Auch findet bei beiden, falls die Installation dort dennoch stattfinden soll, die Prüfung auf ausreichend frei Speicherplatz statt.

Neuer Schnipsel 3:
Code: Alles auswählen
function CheckDriveSpace
   var /Global RootFolder
   var /Global TempDriveFree
   var /Global RootFolderType

; If \\Folder > clearly a Network-Folder
   StrCpy $RootFolder $InstDir 2
   StrCmp $RootFolder "\\" NetworkFolder Driveletter

   Networkfolder:
; prepare String for DriveSpace
      ${GetRoot} $RootFolder $InstDir
      goto NoHDD

; Now check drive-letters
   Driveletter:
   StrCpy $RootFolder $InstDir 3

; prepare vor {GetDrives-Loop}
   StrCpy $RootFolderType "invalid"
   ${GetDrives} "ALL" "CheckDriveType"

; jump if error
   StrCmp $RootFolderType "invalid" CheckSpace
; jump if HDD
   StrCmp $RootFolderType "HDD" CheckSpace

   NoHDD:
; Stay on folder-selection if user wants to give another folder, else check free space
      MessageBox MB_ICONEXCLAMATION|MB_YESNO "Yacy should not be installed on a Harddisk. Continue anyway?" IDYES NextPage
      Abort      

   CheckSpace:

   ClearErrors
   ${DriveSpace} $RootFolder "/D=F /S=G" $TempDriveFree

; If DriveSpace fails for any reason -> jump ahead
   IfErrors NextPage

   IntCmp $TempDriveFree ${SpaceNeedinGB} EnoughSpace LowSpace EnoughSpace
   LowSpace:
      MessageBox MB_ICONEXCLAMATION|MB_YESNO "Yacy needs ${SpaceNeedinGB} GB free space. There are only $TempDriveFree GB left. Continue?" IDYES NextPage
      Abort
   EnoughSpace:
   NextPage:
functionend

function CheckDriveType
   StrCmp $9 $RootFolder 0 +3
   StrCpy $RootFolderType $8   
   StrCpy $0 StopGetDrives
   Push $0
functionend
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Windows-Installer: optional auf D: ?

Beitragvon PCA42 » Di Mär 08, 2011 8:15 pm

So, hab heute die Änderungen ins SVN gebracht. Mein erster eigener Commit *freu*
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home


Zurück zu Wunschliste

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste