diff --git a/windows/Toolbox.iss b/windows/Toolbox.iss index d43c6363ca..144c37a72e 100644 --- a/windows/Toolbox.iss +++ b/windows/Toolbox.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Docker Toolbox" -#define MyAppVersion "1.8.0-rc5" +#define MyAppVersion "1.8.0-rc7" #define MyAppPublisher "Docker" #define MyAppURL "https://docker.com" #define MyAppContact "https://docs.docker.com" @@ -12,7 +12,7 @@ #define dockerCli ".\bundle\docker\docker.exe" #define dockerMachineCli ".\bundle\docker\docker-machine.exe" -#define kitematicSetup ".\bundle\kitematic\kitematic-setup.exe" +#define kitematic ".\bundle\kitematic" #define msysGit ".\bundle\msysGit\Git.exe" @@ -105,9 +105,11 @@ Source: ".\delete.sh"; DestDir: "{app}"; Flags: ignoreversion; Components: "Dock ; DockerMachine Source: "{#dockerMachineCli}"; DestDir: "{app}"; Flags: ignoreversion; Components: "DockerMachine" +Source: ".\migrate.sh"; DestDir: "{app}"; Flags: ignoreversion; Components: "DockerMachine" +Source: ".\migrate.bat"; DestDir: "{app}"; Flags: ignoreversion; Components: "DockerMachine" ; Kitematic -Source: "{#kitematicSetup}"; DestDir: "{app}\installers\kitematic"; Flags: ignoreversion; AfterInstall: RunInstallKitematic(); Components: "Kitematic" +Source: "{#kitematic}\*"; DestDir: "{app}\kitematic"; Flags: ignoreversion recursesubdirs; Components: "Kitematic"; ; Boot2Docker Source: "{#b2dIsoPath}"; DestDir: "{app}"; Flags: ignoreversion; Components: "DockerMachine"; AfterInstall: CopyBoot2DockerISO(); @@ -122,12 +124,16 @@ Source: "{#virtualBoxMsi}"; DestDir: "{app}\installers\virtualbox"; DestName: "v ; NOTE: Don't use "Flags: ignoreversion" on any shared system files [Icons] +Name: "{userprograms}\Docker\Kitematic (Alpha)"; WorkingDir: "{app}"; Filename: "{app}\kitematic\Kitematic.exe"; Components: "Kitematic" +Name: "{commondesktop}\Kitematic (Alpha)"; WorkingDir: "{app}"; Filename: "{app}\kitematic\Kitematic.exe"; Tasks: desktopicon; Components: "Kitematic" Name: "{userprograms}\Docker\Docker Quickstart Terminal"; WorkingDir: "{app}"; Filename: "{app}\start.sh"; IconFilename: "{app}/docker-quickstart-terminal.ico"; Components: "Docker" Name: "{commondesktop}\Docker Quickstart Terminal"; WorkingDir: "{app}"; Filename: "{app}\start.sh"; IconFilename: "{app}/docker-quickstart-terminal.ico"; Tasks: desktopicon; Components: "Docker" [UninstallRun] Filename: "{app}\delete.sh" -Filename: "{localappdata}\Kitematic\Update.exe"; Parameters: "--uninstall"; Flags: skipifdoesntexist + +[UninstallDelete] +Type: filesandordirs; Name: "{localappdata}\..\Roaming\Kitematic" [Code] var @@ -196,7 +202,6 @@ var ResultCode: integer; WinHttpReq: Variant; begin - WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); WinHttpReq.Open('POST', 'https://api.mixpanel.com/track/?data={#EventStartedData}', false); WinHttpReq.SetRequestHeader('Content-Type', 'application/json'); @@ -282,23 +287,6 @@ begin end; end; -procedure RunInstallKitematic(); -var - ResultCode: Integer; -begin - WizardForm.FilenameLabel.Caption := 'installing Kitematic' - if Exec(ExpandConstant('{app}\installers\kitematic\kitematic-setup.exe'), '--silent', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then - begin - // handle success if necessary; ResultCode contains the exit code - //MsgBox('virtualbox install OK', mbInformation, MB_OK); - end - else begin - // handle failure if necessary; ResultCode contains the error code - MsgBox('kitematic install failure', mbInformation, MB_OK); - end; - //restart := True; -end; - procedure CopyBoot2DockerISO(); var ResultCode: Integer; @@ -310,6 +298,34 @@ begin MsgBox('File moving failed!', mbError, MB_OK); end; +procedure MigrateVM(); +var + ResultCode: Integer; +begin + ExecAsOriginalUser('C:\Program Files\Oracle\VirtualBox\VBoxManage.exe', 'showvminfo default', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) + if ResultCode <> 1 then + exit; + + ExecAsOriginalUser('C:\Program Files\Oracle\VirtualBox\VBoxManage.exe', 'showvminfo boot2docker-vm', '', SW_HIDE, ewWaitUntilTerminated, ResultCode) + if ResultCode = 0 then + begin + if MsgBox('Migrate your existing Boot2Docker VM to work with the Docker Toolbox? Your existing Boot2Docker VM will not be affected. This should take about a minute.', mbConfirmation, MB_YESNO) = IDYES then + begin + WizardForm.StatusLabel.Caption := 'Migrating Boot2Docker VM...' + WizardForm.FilenameLabel.Caption := 'This will take a minute...' + if ExecAsOriginalUser(ExpandConstant('{app}\migrate.bat'), ExpandConstant('> {localappdata}\Temp\toolbox-migration-logs.txt'), '', SW_HIDE, ewWaitUntilTerminated, ResultCode) then + begin + MsgBox('Succcessfully migrated Boot2Docker VM to a Docker Machine VM named "default"', mbInformation, MB_OK); + end + else begin + MsgBox('Migration of Boot2Docker VM failed. Please file an issue with the migration logs at https://github.com/docker/machine/issues/new.', mbInformation, MB_OK); + Exec(ExpandConstant('{win}\notepad.exe'), ExpandConstant('{localappdata}\Temp\toolbox-migration-logs.txt'), '', SW_SHOW, ewNoWait, ResultCode) + end + + end; + end +end; + const ModPathName = 'modifypath'; ModPathType = 'user'; @@ -329,6 +345,8 @@ begin taskname := ModPathName; if CurStep = ssPostInstall then begin + if IsComponentSelected('DockerMachine') then + MigrateVM(); WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1'); WinHttpReq.Open('POST', 'https://api.mixpanel.com/track/?data={#EventFinishedData}', false); WinHttpReq.SetRequestHeader('Content-Type', 'application/json'); diff --git a/windows/bundle.sh b/windows/bundle.sh index d6f90503d4..bf80ec7434 100644 --- a/windows/bundle.sh +++ b/windows/bundle.sh @@ -4,10 +4,9 @@ set -e # Script to grab binaries that are going to be bundled with windows installer. # Note to maintainers: Update versions used below with newer releases -boot2dockerIso=1.8.0-rc2 -docker=1.8.0-rc2 +docker=1.8.0-rc3 dockerMachine=0.4.0-rc2 -kitematic=0.8.0-rc4 +kitematic=0.8.0-rc5 vbox=5.0.0 vboxRev=101573 msysGit=1.9.5-preview20150319 @@ -42,16 +41,17 @@ rm finished-cert.txt ( mkdir -p kitematic + curl -fsSL -o kitematic.zip "https://github.com/kitematic/kitematic/releases/download/v${kitematic}/Kitematic-${kitematic}-Windows-Alpha.zip" cd kitematic - - curl -fsSL -o kitematic-setup.exe "https://github.com/kitematic/kitematic/releases/download/v${kitematic}/KitematicSetup-${kitematic}-Windows-Alpha.exe" + unzip ../kitematic.zip + rm ../kitematic.zip ) ( mkdir -p Boot2Docker cd Boot2Docker - curl -fsSL -o boot2docker.iso "https://github.com/${boot2dockerIsoSrc}/boot2docker/releases/download/v${boot2dockerIso}/boot2docker.iso" + curl -fsSL -o boot2docker.iso "https://github.com/${boot2dockerIsoSrc}/boot2docker/releases/download/v${docker}/boot2docker.iso" ) ( diff --git a/windows/delete.sh b/windows/delete.sh index 346feb1677..212b60229f 100644 --- a/windows/delete.sh +++ b/windows/delete.sh @@ -6,7 +6,7 @@ clear cd "$(dirname "$BASH_SOURCE")" -( set -x; ./docker-machine rm -f docker-vm ) || true +( set -x; ./docker-machine rm -f default ) || true echo echo '[Press any key to exit]' diff --git a/windows/migrate.bat b/windows/migrate.bat new file mode 100644 index 0000000000..80e2dea440 --- /dev/null +++ b/windows/migrate.bat @@ -0,0 +1,4 @@ +:: Batch file that installer can run. Simply runs bash script with the same name + +cd %~dp0 +"C:\Program Files (x86)\Git\bin\sh.exe" --login -i migrate.sh diff --git a/windows/migrate.sh b/windows/migrate.sh new file mode 100644 index 0000000000..0bddabe068 --- /dev/null +++ b/windows/migrate.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +./docker-machine -D create -d virtualbox --virtualbox-import-boot2docker-vm boot2docker-vm default | sed -e '/BEGIN/,/END/d' diff --git a/windows/start.sh b/windows/start.sh index 85a2f8a30f..31bcc3771b 100644 --- a/windows/start.sh +++ b/windows/start.sh @@ -2,7 +2,7 @@ set -e -VM=docker-vm +VM=default DOCKER_MACHINE=./docker-machine.exe BLUE='\033[1;34m'