Menu

#1 Starten des VirtualBox-Managers mit Parameter funktioniert n

open
nobody
3
2012-03-21
2012-01-18
Anonymous
No

[startvm]
key=

Was soll hier eingetragen werden? Wie geht das, wenn ich mehrere unterschiedliche VMs so starten will? Und: bis vor kurzem ging es einfach so, als Parameter nach dem Portable-VirtualBox.exe Aufruf. Da konnte ich einfach Verknüpfung machen, und die Geschichte war erledigt. Dieser Parameter wird aber mittlerweile nicht weitergeleitet. Warum nur?

Discussion

  • Megachip

    Megachip - 2012-03-21

    An diesem Code wurde eigentlich nichts geändert. Leider sind die Entwicklungsressourcen momentan sehr knapp, vllt kannst du selbst mal nachsehen?

     
  • Megachip

    Megachip - 2012-03-21
    • priority: 5 --> 3
     
  • Nobody/Anonymous

    OK, ich glaube, ich habe die Denkfehler gefunden. In Revision 44 werden ab Zeile 733 die Parameter interpretiert. Dabei wird in der Zeile 737 überprüft, ob die %userhome% den Standardwert hat und ob die virtuelle Festplatte mit dem Namen, der als erster Parameter übergeben war, existiert. Und zwar unbedingt als VDI. Das Letzte ist völliger Quatsch. Was ist, wenn ich die Festpalte im anderen Format habe? Was ist, wenn ich die anders als Maschine selbst benannt habe?

    Hier soll man überprüfen, ob im „\data\.VirtualBox\Machines\“ ein Verzeichnis mit der Namen der Maschine existiert, also der ersten Parameter. Eventuell auch ein .vbox oder .xml Datei mit dem gleichen Namen drin, aber dessen bin ich mir nicht so sicher. Auf jedem Fall macht es keinen Sinn, nach der Festplatte zu suchen.

    Kann man das korrigieren? Wann ist mit der korrigierten Version zu rechnen?

     
  • Nobody/Anonymous

    Das Gleiche gilt auch für die Auswahl des zu startendes VM in Einstellungen. Hier wird z. Zt. Eine virtuelle Festplatte ausgewählt. Es muss aber ein VM selbst, also Verzeichnis oder die Beschreibungsdatei in diesem Verzeichnis, sein. Sehe dazu die Beschreibung von VBoxManage.

     
  • Megachip

    Megachip - 2012-03-26

    Das leichteste wäre, du würdest direkt hier ein Patchfile anbieten, da ich nicht weiß, wann einer der 3 Projektmitglieder dazu kommt, sich die Sache mal anzuschauen. Wenn du willst, können wir dich sicher auch zu den Entwicklern hinzufügen, damit solltest du schreibzugriff aufs SVN bekommen...

     
  • Nobody/Anonymous

    Eigentlich kein Problem für mich, es geht schließlich um 2 Änderungen in 2 Zeilen. Die kann ich auch hier posten. Aber: man soll das auch vorher testen, und ich habe keine Ahnung wegen Debuggen mit Auto-It. Wenn mir da jemand helfen oder erklären kann, dann werde ich das auch tun, sonst kann ich einfach die Zeilen hier veröffentlichen, und jemand testet es dann. Wegen 2 Zeilen werde ich nicht so viel Aufwand mit Zugang und Rechten treiben.

     
  • Nobody/Anonymous

    Here are the corrections for using VM folder name and not the hard disk file name as a start parameter of the portable VBox for automatic start of some VM. Right now the AutoIt script checks and uses the hard disk file name, which is simply not correct.

    The first change is for using the start parameter for checking of VM folder existence, not the hard disk file existence. So it can work this correct way.

    Line 737
    If IniRead ($var1, "userhome", "key", "NotFound") = "%CD%\data\.VirtualBox" AND FileExists (@ScriptDir&"\data\.VirtualBox\HardDisks\"&$CmdLine[1]&".vdi") Then

    to

    If IniRead ($var1, "userhome", "key", "NotFound") = "%CD%\data\.VirtualBox" AND FileExists (@ScriptDir&"\data\.VirtualBox\Machines\"&$StartVM) Then

    The second change is for VM choose functionality in settings, so the user would choose the VM folder and not the hard disk file.

    From Line 1249
    Local $Start_VM = IniRead ($var1, "startvm", "key", "NotFound")
    If IniRead ($var1, "startvm", "key", "NotFound") Then
    If FileExists (@ScriptDir&"\data\.VirtualBox\HardDisks\") Then
    $PathVM = FileOpenDialog (IniRead ($var2 & $lng &".ini", "srcstartvm", "01", "NotFound"), $Start_VM&"\.VirtualBox\HardDisks", "VirtualBox VM (*.vdi)", 1+2)
    EndIf
    Else
    If FileExists (@ScriptDir&"\data\.VirtualBox\HardDisks\") Then
    $PathVM = FileOpenDialog (IniRead ($var2 & $lng &".ini", "srcstartvm", "01", "NotFound"), @ScriptDir&"\data\.VirtualBox\HardDisks", "VirtualBox VM (*.vdi)", 1+2)
    EndIf
    EndIf
    If NOT @error Then
    $VM_String = StringSplit ($PathVM, "\")
    $String = ""
    For $VDI In $VM_String
    $String = $VDI
    Next
    $VM_Start = StringSplit ($String, ".")
    GUICtrlSetState ($Radio4, $GUI_CHECKED)
    GUICtrlSetData ($VMStart, $VM_Start[1])
    EndIf

    to

    Local $Start_VM = IniRead ($var1, "startvm", "key", "NotFound")
    If IniRead ($var1, "startvm", "key", "NotFound") Then
    If FileExists (@ScriptDir&"\data\.VirtualBox\HardDisks\") Then
    $PathVM = FileSelectFolder (IniRead ($var2 & $lng &".ini", "srcstartvm", "01", "NotFound"), "", 2, $Start_VM&"\.VirtualBox\Machines")
    EndIf
    Else
    If FileExists (@ScriptDir&"\data\.VirtualBox\HardDisks\") Then
    $PathVM = FileSelectFolder (IniRead ($var2 & $lng &".ini", "srcstartvm", "01", "NotFound"), "", 2, @ScriptDir&"\data\.VirtualBox\Machines")
    EndIf
    EndIf
    If NOT @error Then
    $VM_String = StringSplit ($PathVM, "\")
    $String = ""
    For $VDI In $VM_String
    $String = $VDI
    Next
    $VM_Start = $String
    GUICtrlSetState ($Radio4, $GUI_CHECKED)
    GUICtrlSetData ($VMStart, $VM_Start[1])
    EndIf

    As I said, this should be tested, if it works as it should. I wrote it down anyway, so it would be easier and I wouldn’t forget all this changes.

     
MongoDB Logo MongoDB