This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
userspace:oracle_virtualbox [2013/10/17 06:56] bobzbobz created |
userspace:oracle_virtualbox [2021/08/23 08:37] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Oracle VirtualBox (For OS Compatibility) ====== | + | ====== Oracle VirtualBox (for OS compatibility problems) ====== |
| + | //Scripts and Guide by Soren Birk// | ||
| + | This guide describes how to create a shared virtualbox between several users in a Windows domain environment. \\ | ||
| + | This guide will use a virtual machine with Windows XP, but it could be any OS you like. The purpose of this \\ | ||
| + | is to have a virtual environment for programs that can’t run on your primary Operating System. | ||
| + | |||
| + | The package creates a shortcut on all users’ desktop called “Create VirtualXP”. When someone clicks this icon,\\ | ||
| + | a new shortcut will appear on __that users’ desktop__ called “VirtualXP”. This shortcut loads the __shared__ virtual machine, \\ | ||
| + | disables auto-update and disables all the default pop-up messages. | ||
| + | |||
| + | **Tested With:** | ||
| + | * OPSI 4.0.2.4 | ||
| + | * Winst 4.11.3.3 | ||
| + | * Windows 7, 64-Bit | ||
| + | |||
| + | **Instructions: | ||
| + | |||
| + | Okay, this package is not that easy and you will need to do some preparations for it to work. | ||
| + | * Prepare VirtualBox-installer (.msi): | ||
| + | * Start off by downloading VirtualBox for Windows from: https:// | ||
| + | * Open a command prompt and write: < | ||
| + | * You can now find the .msi-file under Appdata → Local → Temp → Virtualbox. You will need both the .msi-file (x64) and the common.cab. | ||
| + | * Copy them to CLIENT_DATA\VirtualBox | ||
| + | * Prepare the certificate for silent install: | ||
| + | * You should now install the program (just use the .exe-file) – accept the certificate when prompted. | ||
| + | * When installed, go to Run… and write certmgr.msc. | ||
| + | * Navigate to “trusted publishers” → Right click " | ||
| + | * Copy the certificate to CLIENT_DATA\Certificate | ||
| + | * Prepare the virtual machine: | ||
| + | * Create a new virtual machine in VirtualBox (doesn’t have to be Windows XP – could also be linux ect.) and set it up with the software you like. | ||
| + | * Network could cause problems, when you install the package to a new PC, if “bridged” mode is set – I use NAT. | ||
| + | * When the virtual machine is created as you like, shut it down. | ||
| + | * Copy the VM-folder from <user folder> | ||
| + | * Prepare the user-specific shortcut: | ||
| + | * Create a shortcut to your desktop with a path to: " | ||
| + | * Create a folder called C:\icons and copy the icon you want for the VirtualXP-shortcut to this folder. | ||
| + | * Finally set the icon for the shortcut. | ||
| + | * Copy this shortcut to CLIENT_DATA\VMs-folder. | ||
| + | * Prepare the .bat-file: | ||
| + | * Create a .bat-file (scroll to the bottom of this guide) and copy it to CLIENT_DATA\VMs. | ||
| + | |||
| + | **Tree:** | ||
| + | < | ||
| + | CLIENT_DATA | ||
| + | ├ setup.ins | ||
| + | ├ uninstall.ins | ||
| + | ├ delsub.ins | ||
| + | ├ vbox-virtualxplogo.png | ||
| + | ├ Certificate | ||
| + | │ └ oraclecert.cer | ||
| + | ├ Icons | ||
| + | │ ├ registericon.ico | ||
| + | │ └ virtualxpicon.ico | ||
| + | ├ VirtualBox | ||
| + | │ ├ common.cab | ||
| + | │ └ VirtualBox-X.X.XX-rXXXXX-MultiArch_amd64.msi | ||
| + | └ VMs | ||
| + | ├ VirtualXp(.lnk) | ||
| + | ├ Create_VirtualXP.bat | ||
| + | └ VirtualXP | ||
| + | ├ VirtualXP.vbox | ||
| + | ├ VirtualXP.vbox-prev | ||
| + | ├ VirtualXP.vdi | ||
| + | └ Logs (folder) | ||
| + | </ | ||
| + | |||
| + | //Use Microsoft Orca to get the Msi-ID for the delsub-script.// | ||
| + | |||
| + | //Please read through the scripts, as you will need to apply your own domain-specific information.// | ||
| + | |||
| + | ==== setup.ins ==== | ||
| + | <code winst> | ||
| + | ; Author Soren Birk | ||
| + | |||
| + | [Actions] | ||
| + | requiredWinstVersion >= " | ||
| + | |||
| + | DefVar $MsiId$ | ||
| + | DefVar $LogDir$ | ||
| + | DefVar $ProductId$ | ||
| + | DefVar $MinimumSpace$ | ||
| + | DefVar $InstallDir$ | ||
| + | DefVar $ExitCode$ | ||
| + | DefVar $ProfilePath$ | ||
| + | DefVar $UserProfileName$ | ||
| + | DefStringList $UserProfileNamesList$ | ||
| + | |||
| + | set $UserProfileNamesList$ = getOutStreamFromSection (' | ||
| + | |||
| + | Set $LogDir$ = " | ||
| + | |||
| + | ; ---------------------------------------------------------------- | ||
| + | ; - Please edit these values | ||
| + | ; ---------------------------------------------------------------- | ||
| + | Set $ProductId$ | ||
| + | Set $MinimumSpace$ | ||
| + | Set $InstallDir$ | ||
| + | ; ---------------------------------------------------------------- | ||
| + | |||
| + | if not(HasMinimumSpace (" | ||
| + | LogError "Not enough free space on %SystemDrive%, | ||
| + | isFatalError "Not enough free space" | ||
| + | ; Stop the proces and set installation status as failed | ||
| + | else | ||
| + | comment "Show product logo" | ||
| + | ShowBitmap " | ||
| + | |||
| + | if FileExists(" | ||
| + | comment "Start uninstall sub section" | ||
| + | Sub " | ||
| + | endif | ||
| + | |||
| + | Message " | ||
| + | |||
| + | ChangeDirectory " | ||
| + | |||
| + | comment " | ||
| + | DosInAnIcon_install_cert | ||
| + | |||
| + | comment "Start setup-program" | ||
| + | Winbatch_install | ||
| + | |||
| + | comment " | ||
| + | Files_install | ||
| + | |||
| + | comment " | ||
| + | LinkFolder_install | ||
| + | |||
| + | comment " | ||
| + | DosInAnIcon_set_rights | ||
| + | |||
| + | endif | ||
| + | |||
| + | [DosInAnIcon_install_cert] | ||
| + | certutil -addstore " | ||
| + | |||
| + | [Winbatch_install] | ||
| + | msiexec /i " | ||
| + | |||
| + | [Files_install] | ||
| + | copy -s " | ||
| + | ; copying icons also | ||
| + | copy -s " | ||
| + | |||
| + | [LinkFolder_install] | ||
| + | set_basefolder common_desktopdirectory | ||
| + | set_subfolder "" | ||
| + | ; deleting standard shortcut | ||
| + | delete_element " | ||
| + | ; creating new shortcut | ||
| + | set_link | ||
| + | name: " | ||
| + | target: " | ||
| + | parameters: | ||
| + | working_dir: | ||
| + | icon_file: " | ||
| + | icon_index: | ||
| + | end_link | ||
| + | |||
| + | [DosInAnIcon_set_rights] | ||
| + | cacls C:\VMs /E /T /C /G "< | ||
| + | |||
| + | [DosInAnIcon_list_profiledir] | ||
| + | @echo off | ||
| + | dir " | ||
| + | |||
| + | [Files_uninstall2] | ||
| + | del -sf " | ||
| + | |||
| + | [Sub_check_exitcode] | ||
| + | comment "Test for installation success via exit code" | ||
| + | set $ExitCode$ = getLastExitCode | ||
| + | ; informations to exit codes see | ||
| + | ; http:// | ||
| + | ; http:// | ||
| + | if ($ExitCode$ = " | ||
| + | comment "Looks good: setup program gives exitcode zero" | ||
| + | else | ||
| + | comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ | ||
| + | if ($ExitCode$ = " | ||
| + | comment " | ||
| + | comment " | ||
| + | else | ||
| + | if ($ExitCode$ = " | ||
| + | comment "looks good: setup program gives exitcode 1641" | ||
| + | comment " | ||
| + | else | ||
| + | if ($ExitCode$ = " | ||
| + | comment "looks good: setup program gives exitcode 3010" | ||
| + | comment " | ||
| + | else | ||
| + | logError " | ||
| + | isFatalError | ||
| + | endif | ||
| + | endif | ||
| + | endif | ||
| + | endif | ||
| + | </ | ||
| + | |||
| + | ==== uninstall.ins ==== | ||
| + | <code winst> | ||
| + | ; Author Soren Birk | ||
| + | |||
| + | [Actions] | ||
| + | requiredWinstVersion >= " | ||
| + | |||
| + | DefVar $MsiId$ | ||
| + | DefVar $LogDir$ | ||
| + | DefVar $ExitCode$ | ||
| + | DefVar $ProductId$ | ||
| + | DefVar $InstallDir$ | ||
| + | DefVar $ProfilePath$ | ||
| + | DefVar $UserProfileName$ | ||
| + | DefStringList $UserProfileNamesList$ | ||
| + | |||
| + | set $UserProfileNamesList$ = getOutStreamFromSection (' | ||
| + | |||
| + | Set $LogDir$ = " | ||
| + | |||
| + | ; ---------------------------------------------------------------- | ||
| + | ; - Please edit these values | ||
| + | ; ---------------------------------------------------------------- | ||
| + | Set $ProductId$ | ||
| + | Set $InstallDir$ | ||
| + | ; ---------------------------------------------------------------- | ||
| + | |||
| + | |||
| + | comment "Show product logo" | ||
| + | ShowBitmap " | ||
| + | |||
| + | Message " | ||
| + | |||
| + | if FileExists(" | ||
| + | comment "Start uninstall sub section" | ||
| + | Sub " | ||
| + | endif | ||
| + | |||
| + | [DosInAnIcon_list_profiledir] | ||
| + | @echo off | ||
| + | dir " | ||
| + | |||
| + | [Files_uninstall2] | ||
| + | del -sf " | ||
| + | </ | ||
| + | |||
| + | ==== delsub.ins ==== | ||
| + | <code winst> | ||
| + | ; Author Soren Birk | ||
| + | |||
| + | |||
| + | Set $MsiId$ = ' | ||
| + | |||
| + | |||
| + | Message " | ||
| + | |||
| + | if not (GetRegistryStringValue64(" | ||
| + | comment "MSI id " + $MsiId$ + " found in registry, starting uninstall" | ||
| + | Winbatch_uninstall_msi | ||
| + | sub_check_exitcode | ||
| + | endif | ||
| + | |||
| + | comment " | ||
| + | Files_uninstall | ||
| + | |||
| + | comment " | ||
| + | LinkFolder_uninstall | ||
| + | |||
| + | |||
| + | for %prof% in $UserProfileNamesList$ do Sub_check_user | ||
| + | |||
| + | |||
| + | [Winbatch_uninstall_msi] | ||
| + | msiexec /x $MsiId$ /qb! REBOOT=ReallySuppress | ||
| + | |||
| + | [Files_uninstall] | ||
| + | del -sf " | ||
| + | del -sf " | ||
| + | |||
| + | [LinkFolder_uninstall] | ||
| + | set_basefolder common_desktopdirectory | ||
| + | set_subfolder "" | ||
| + | delete_element " | ||
| + | |||
| + | [Sub_check_user] | ||
| + | Set $UserProfileName$ = " | ||
| + | if not ($UserProfileName$ = "" | ||
| + | if FileExists(" | ||
| + | Files_uninstall2 | ||
| + | endif | ||
| + | endif | ||
| + | |||
| + | [Sub_check_exitcode] | ||
| + | comment "Test for installation success via exit code" | ||
| + | set $ExitCode$ = getLastExitCode | ||
| + | ; informations to exit codes see | ||
| + | ; http:// | ||
| + | ; http:// | ||
| + | if ($ExitCode$ = " | ||
| + | comment "Looks good: setup program gives exitcode zero" | ||
| + | else | ||
| + | comment "Setup program gives a exitcode unequal zero: " + $ExitCode$ | ||
| + | if ($ExitCode$ = " | ||
| + | comment " | ||
| + | comment " | ||
| + | else | ||
| + | if ($ExitCode$ = " | ||
| + | comment "looks good: setup program gives exitcode 1641" | ||
| + | comment " | ||
| + | else | ||
| + | if ($ExitCode$ = " | ||
| + | comment "looks good: setup program gives exitcode 3010" | ||
| + | comment " | ||
| + | else | ||
| + | logError " | ||
| + | isFatalError | ||
| + | endif | ||
| + | endif | ||
| + | endif | ||
| + | endif | ||
| + | </ | ||
| + | |||
| + | ==== Create_VirtualXP.bat ==== | ||
| + | <code dos> | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | xcopy " | ||
| + | msg * " | ||
| + | </ | ||