VirtualBox

Changeset 51009 in vbox for trunk/src/VBox/Installer


Ignore:
Timestamp:
Apr 9, 2014 9:43:59 AM (11 years ago)
Author:
vboxsync
Message:

Windows host installer: Added merge module (msm) support.

Location:
trunk/src/VBox/Installer/win
Files:
5 added
12 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.cpp

    r41024 r51009  
    55
    66/*
    7  * Copyright (C) 2008-2012 Oracle Corporation
     7 * Copyright (C) 2008-2014 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    289289    }
    290290
    291     VBoxSetProperty(hModule, L"PYTHON_INSTALLED", bInstalled ? L"1" : L"0");
     291    VBoxSetProperty(hModule, L"VBOX_PYTHON_IS_INSTALLED", bInstalled ? L"1" : L"0");
    292292
    293293    if (!bInstalled)
  • trunk/src/VBox/Installer/win/Makefile.kmk

    r49051 r51009  
    55
    66#
    7 # Copyright (C) 2006-2013 Oracle Corporation
     7# Copyright (C) 2006-2014 Oracle Corporation
    88#
    99# This file is part of VirtualBox Open Source Edition (OSE), as
     
    5151VBOX_INSTALLER_LANGUAGES  = de_DE en_US fr_FR it_IT zh_TW
    5252VBOX_INSTALLER_LANGUAGES += $(VBOX_INSTALLER_ADD_LANGUAGES)
     53
     54#
     55# List of merge modules to use.
     56#
     57VBOX_INSTALLER_MERGE_MODULES = App USB NetAdp NetFlt Python
    5358
    5459#
     
    180185endef
    181186
    182 $(foreach lang,$(VBOX_INSTALLER_LANGUAGES),$(eval $(def_vbox_lang_xml)))
    183 
     187$(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
     188        $(eval $(def_vbox_lang_xml)))
    184189
    185190#
     
    217222        $(eval local license_file := $(VBOX_BRAND_$(subst en_US_,,$(lang)_)LICENSE_RTF)) \
    218223        $(eval $(def_vbox_license_xml)))
    219 
    220224
    221225#
     
    310314        $$(call MSG_L1,Linking installer $$@)
    311315        $(QUIET)$(RM) -f $$(wildcard $(VBOX_WIN_INST_OUT_DIR)/$(PACKAGE_BASE)-r*_$(lang).msi)
    312         $(VBOX_PATH_WIX)/light.exe -nologo \
     316        $(VBOX_PATH_WIX)/light.exe -v -nologo \
    313317                -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
    314318                -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
     
    325329endef
    326330
    327 $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), $(eval $(def_vbox_link_msi)))
    328 
     331$(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
     332        $(eval $(def_vbox_link_msi)))
     333
     334#
     335# Merge module linking (all languages).
     336#
     337# Note: This will clean up any previous .msm to prevent dep build boxes from
     338#       filling up with old files.
     339#
     340# Note: Disable parallel jobs here because of shared common.cab access issues.
     341#
     342define def_vbox_link_msm
     343.NOTPARALLEL: $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).msm
     344$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).msm: \
     345                $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wixobj \
     346                $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
     347                $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
     348                $(PATH_STAGE_BIN)/VBoxInstallHelper.dll \
     349                $(VBOX_SVN_REV_KMK) \
     350                $(MAKEFILE_CURRENT) \
     351                | $$$$(dir $$$$@)
     352        $$(call MSG_L1,Linking installer $$@)
     353        $(QUIET)$(RM) -f $$(wildcard $(VBOX_WIN_INST_OUT_DIR)/$(PACKAGE_BASE)-r*_$(lang).msi)
     354        $(VBOX_PATH_WIX)/light.exe -v -nologo \
     355                -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/Language_$(lang).wxl \
     356                -loc $(VBOX_WIN_INST_OUT_DIR)/NLS/License_$(lang).wxl \
     357                -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
     358                $(VBOX_MSI_ICE_IGNORE) \
     359                -out $$@ \
     360                $$< \
     361                $(if-expr "$(KBUILD_TARGET_ARCH)" == "x86", \
     362                        $(VBOX_PATH_WIX)/difxapp_x86.wixlib, \
     363                        $(VBOX_PATH_WIX)/difxapp_x64.wixlib)
     364        $(RM) -f $(VBOX_WIN_INST_OUT_DIR)/NLS/$(lang).mst
     365        $(call VBOX_SIGN_FILE_FN,$$@,$(VBOX_PRODUCT) $(VBOX_VERSION_STRING)r$(VBOX_SVN_REV) ($(KBUILD_TARGET_ARCH)))
     366endef
     367
     368$(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
     369        $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
     370                $(eval $(def_vbox_link_msm))))
    329371
    330372#
     
    416458$(VBOX_WIN_INST_OUT_DIR)/VirtualBox_$(lang).wixobj: \
    417459                        $(PATH_SUB_CURRENT)/VirtualBox.wxs \
     460                        $(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
     461                                $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).msm) \
     462                        $(VBOX_VERSION_STAMP) \
     463                        | $$$$(dir $$$$@)
     464        $(QUIET)$(RM) -f $@
     465        $(REDIRECT) \
     466                -E 'PATH_OUT=$(subst /,\\,$(PATH_OUT))' \
     467                -E 'PATH_TARGET=$(subst /,\\,$(VBOX_WIN_INST_OUT_DIR))' \
     468                -E 'PATH_ROOT=$(subst /,\\,$(PATH_ROOT))' \
     469                -E 'PATH_MULTIARCH_GUEST_ADDITIONS_ISO=$(subst /,\\,$(PATH_MULTIARCH_GUEST_ADDITIONS_ISO))' \
     470                -E 'VBOX_PATH_WIN_INST_SRC=$(subst /,\\,$(VBOX_PATH_WIN_INST_SRC))' \
     471                -E 'VBOX_BRAND_WIN_INST_DLGJPG=$(subst /,\\,$(VBOX_BRAND_WIN_INST_DLGJPG))' \
     472                -E 'VBOX_ADD_LANGUAGES=$(VBOX_INSTALLER_ADD_LANGUAGES)' \
     473                -E 'VBOX_BRAND_LICENSE_RTF=$(subst /,\\,$(VBOX_BRAND_LICENSE_RTF))' \
     474                $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
     475                        -E 'VBOX_BRAND_$(lang)_LICENSE_RTF=$(subst /,\\,$(VBOX_BRAND_$(subst en_US_,,$(lang)_)LICENSE_RTF))') \
     476                -E 'VBOX_BUILD_NR_FOR_INST=$(VBOX_VERSION_BUILD)' \
     477                -E 'VBOX_VENDOR=$(VBOX_VENDOR)' \
     478                -E 'VBOX_VENDOR_SHORT=$(VBOX_VENDOR_SHORT)' \
     479                -E 'VBOX_PRODUCT=$(VBOX_PRODUCT)' \
     480                -E 'VBOX_C_YEAR=$(VBOX_C_YEAR)' \
     481                -E 'VBOX_VERSION_STRING=$(VBOX_VERSION_STRING)' \
     482                -E 'VBOX_VERSION_STRING_RAW=$(VBOX_VERSION_STRING_RAW)' \
     483                -E 'VBOX_VERSION_MAJOR_INST=$(VBOX_VERSION_MAJOR)' \
     484                -E 'VBOX_VERSION_MINOR_INST=$(VBOX_VERSION_MINOR)' \
     485                -E 'VBOX_SIGNING_MODE=$(strip $(if $(VBOX_SIGNING_MODE),$(VBOX_SIGNING_MODE),none))' \
     486                -E 'VBOX_GUI_USE_QGL=$(if $(VBOX_GUI_USE_QGL),yes,no)' \
     487                $(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
     488                        -E 'VBOX_WIN_INST_MERGE_$(toupper $(module))=$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).msm') \
     489                -E 'VBOX_WITH_32_ON_64_MAIN_API=$(if $(VBOX_WITH_32_ON_64_MAIN_API),yes,no)' \
     490                -E 'VBOX_WITH_ADDITIONS_PACKING=$(if $(VBOX_WITH_ADDITIONS_PACKING),yes,no)' \
     491                -E 'VBOX_WITH_COMBINED_PACKAGE=$(if $(VBOX_WITH_COMBINED_PACKAGE),yes,no)' \
     492                -E 'VBOX_WITH_CROGL=$(if $(VBOX_WITH_CROGL),yes,no)' \
     493                -E 'VBOX_WITH_DEBUGGER_GUI=$(if-expr defined(VBOX_WITH_DEBUGGER_GUI) && defined(VBOX_WITH_QTGUI),yes,no)' \
     494                -E 'VBOX_WITH_DOCS_PACKING=$(if $(VBOX_WITH_DOCS_PACKING),yes,no)' \
     495                -E 'VBOX_WITH_EFIFW_PACKING=$(if $(VBOX_WITH_EFIFW_PACKING),yes,no)' \
     496                -E 'VBOX_WITH_EXTPACK=$(if $(VBOX_WITH_EXTPACK),yes,no)' \
     497                -E 'VBOX_WITH_GUEST_CONTROL=$(if $(VBOX_WITH_GUEST_CONTROL),yes,no)' \
     498                -E 'VBOX_WITH_GUEST_PROPS=$(if $(VBOX_WITH_GUEST_PROPS),yes,no)' \
     499                -E 'VBOX_WITH_DRAG_AND_DROP=$(if $(VBOX_WITH_DRAG_AND_DROP),yes,no)' \
     500                -E 'VBOX_WITH_NETFLT=$(if $(VBOX_WITH_NETFLT),yes,no)' \
     501                -E 'VBOX_WITH_PYTHON=$(if $(VBOX_WITH_PYTHON),yes,no)' \
     502                -E 'VBOX_WITH_QTGUI=$(if $(VBOX_WITH_QTGUI),yes,no)' \
     503                -E 'VBOX_WITH_VIDEOHWACCEL=$(if $(VBOX_WITH_VIDEOHWACCEL),yes,no)' \
     504                -E 'VBOX_WITH_VRDP=$(if-expr defined(VBOX_WITH_VRDP) && !defined(VBOX_WITH_EXTPACK_PUEL),yes,no)' \
     505                -E 'VBOX_WITH_WEBSERVICES=$(if $(VBOX_WITH_WEBSERVICES),yes,no)' \
     506                -E 'VBOX_WITH_SECURELABEL=$(if $(VBOX_WITH_SECURELABEL),yes,no)' \
     507                -E 'VBOX_WITH_SERIALNUMBER_INSTALL=$(if $(VBOX_WITH_SERIALNUMBER_INSTALL),yes,no)' \
     508                -E 'VBOX_WITH_LICENSE_DISPLAY=$(if $(VBOX_WITH_LICENSE_DISPLAY),yes,no)' \
     509                -E 'VBOX_WINDOWS_ICON_FILE=$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))' \
     510                -E 'BUILD_TYPE=$(KBUILD_TYPE)' \
     511                -E 'BUILD_TARGET_ARCH=$(KBUILD_TARGET_ARCH)' \
     512                -E 'VBOX_VCC_TOOL_STEM=$(VBOX_VCC_TOOL_STEM)' \
     513                -- \
     514                $(VBOX_PATH_WIX)/candle.exe $(filter-out $(VBOX_VERSION_STAMP),$$<) \
     515                        -ext $(VBOX_PATH_WIX)/WixUIExtension.dll \
     516                        -ext $(VBOX_PATH_WIX)/WixDifxAppExtension.dll \
     517                        -out $$@
     518ifeq ($(lang),en_US)
     519#
     520# Generate dependency file, we share this between all the languages.
     521#
     522        $(APPEND) -t $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wixobj.dep 'VBOX_MSI_DEPENDENCIES = \'
     523        $(SED) -f $(VBOX_PATH_WIN_INST_SRC)/dep.sed \
     524                --append $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wixobj.dep \
     525                $(VBOX_PATH_WIN_INST_SRC)/VirtualBox.wxs \
     526                $(VBOX_PATH_WIN_INST_SRC)/UserInterface.wxi \
     527                $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib.wxi
     528        $(APPEND) $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wixobj.dep ''
     529endif
     530endef
     531
     532$(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
     533        $(eval $(def_vbox_compile_wixobj)))
     534
     535#
     536# MSM (merge module) compile.
     537#
     538define def_vbox_compile_msm
     539$(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module)_$(lang).wixobj: \
     540                        $(PATH_SUB_CURRENT)/VBoxMerge$(module).wxs \
     541                        $(PATH_SUB_CURRENT)/UserInterface.wxi \
    418542                        $(VBOX_WIN_INST_OUT_DIR)/Shortcuts_StartMenu.wxi \
    419                         $(PATH_SUB_CURRENT)/UserInterface.wxi \
    420543                        $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib.wxi \
    421544                        $(if $(VBOX_WITH_32_ON_64_MAIN_API),$(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib_x86.wxi,) \
     
    481604# Generate dependency file, we share this between all the languages.
    482605#
    483         $(APPEND) -t $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wixobj.dep 'VBOX_MSI_DEPENDENCIES = \'
     606        $(APPEND) -t $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module).msm.dep 'VBOX_MSI_DEPENDENCIES = \'
    484607        $(SED) -f $(VBOX_PATH_WIN_INST_SRC)/dep.sed \
    485                 --append $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wixobj.dep \
    486                 $(VBOX_PATH_WIN_INST_SRC)/VirtualBox.wxs \
     608                --append $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module).msm.dep \
     609                $(VBOX_PATH_WIN_INST_SRC)/VBoxMerge$(module).wxs \
    487610                $(VBOX_PATH_WIN_INST_SRC)/UserInterface.wxi \
    488611                $(VBOX_WIN_INST_OUT_DIR)/VirtualBox_TypeLib.wxi
    489         $(APPEND) $(VBOX_WIN_INST_OUT_DIR)/VirtualBox.wixobj.dep ''
     612        $(APPEND) $(VBOX_WIN_INST_OUT_DIR)/VBoxMerge$(module).msm.dep ''
    490613endif
    491614endef
    492615
    493 $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
    494         $(eval $(def_vbox_compile_wixobj)))
     616$(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \
     617        $(foreach lang,$(VBOX_INSTALLER_LANGUAGES), \
     618                $(eval $(def_vbox_compile_msm))))
    495619
    496620#
  • trunk/src/VBox/Installer/win/NLS/de_DE.wxl

    r49534 r51009  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <WixLocalization xmlns="http://schemas.microsoft.com/wix/2003/11/localization" Codepage="1252" Culture="de_DE">
     2<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Codepage="1252" Culture="de_DE">
    33
    44    <!--
  • trunk/src/VBox/Installer/win/NLS/en_US.wxl

    r49534 r51009  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <WixLocalization xmlns="http://schemas.microsoft.com/wix/2003/11/localization" Codepage="1252" Culture="en_US">
     2<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Codepage="1252" Culture="en_US">
    33
    44    <!--
  • trunk/src/VBox/Installer/win/NLS/fa_IR.wxl

    r49534 r51009  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <WixLocalization xmlns="http://schemas.microsoft.com/wix/2003/11/localization" Codepage="1256" Culture="fa">
     2<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Codepage="1256" Culture="fa">
    33    <!--
    44            Language Definition Include for VirtualBox WiX script.
  • trunk/src/VBox/Installer/win/NLS/fr_FR.wxl

    r49534 r51009  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <WixLocalization xmlns="http://schemas.microsoft.com/wix/2003/11/localization" Codepage="1252" Culture="fr_FR">
     2<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Codepage="1252" Culture="fr_FR">
    33
    44    <!--
  • trunk/src/VBox/Installer/win/NLS/it_IT.wxl

    r49534 r51009  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <WixLocalization xmlns="http://schemas.microsoft.com/wix/2003/11/localization" Codepage="1252" Culture="en_US">
     2<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Codepage="1252" Culture="en_US">
    33    <!--
    44            Language Definition Include for VirtualBox WiX script.
  • trunk/src/VBox/Installer/win/NLS/tr_TR.wxl

    r48623 r51009  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <WixLocalization xmlns="http://schemas.microsoft.com/wix/2003/11/localization" Codepage="1254" Culture="tr_TR">
     2<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Codepage="1254" Culture="tr_TR">
    33
    44    <!--
     
    5353
    5454    <String Id="VB_Python">VirtualBox için Python desteği.</String>
    55    
    56         <!---->
    57    
     55
     56        <!---->
     57
    5858        <String Id="NeedAdmin">[ProductName] yüklemek(kaldırmak) için yönetici haklarına sahip olmanız gerekir! Bu kur şimdi iptal edilecek.</String>
    5959    <String Id="WrongOS">Bu uygulama sadece Windows XP veya üzerinde çalışır.</String>
     
    6262    <String Id="SunFound">Bu makinede eski bir Sun VirtualBox kurulumu bulundu. Lütfen önce bu paketi kaldırın ve sonra [ProductName] yükleyin!</String>
    6363    <String Id="InnotekFound">Bu makinede eski bir innotek VirtualBox kurulumu bulundu. Lütfen önce bu paketi kaldırın ve sonra [ProductName] yükleyin!</String>
    64    
    65         <!---->
    66    
     64
     65        <!---->
     66
    6767        <String Id="CancelDlg_Question">[ProductName] kurulumunu iptal etmek istediğinize emin misiniz?</String>
    68    
    69         <!---->
    70    
     68
     69        <!---->
     70
    7171        <String Id="WelcomeDlg_Header">[ProductName] Kur Sihirbazına Hoş Geldiniz</String>
    7272    <String Id="WelcomeDlg_Body">Kur Sihirbazı bilgisayarınıza [ProductName] kuracak. Devam etmek için İleri'ye veya Kur Sihirbazından çıkmak için İptal'e tıklayın.</String>
    73    
    74         <!---->
    75    
     73
     74        <!---->
     75
    7676        <String Id="LicenseAgreementDlg_Header">Son Kullanıcı Lisans Sözleşmesi</String>
    7777    <String Id="LicenseAgreementDlg_Body">Lütfen aşağıdaki lisans sözleşmesini dikkatlice okuyun.</String>
     
    8080
    8181    <!---->
    82    
     82
    8383        <String Id="CheckSerialDlg_Header">Seri Numara</String>
    8484    <String Id="CheckSerialDlg_Body">Lütfen aşağıdaki alana seri numaranızı girin. You'll find it on the sticker inside the VirtualBox CD kutusu içerisindeki etikette bulacaksınız.</String>
    8585    <String Id="CheckSerialDlg_Footer">Seri numarasını girmeniz bittiğinde, aşağıdaki "Kontrol Et" düğmesine basın".</String>
    86    
    87         <!---->
    88    
     86
     87        <!---->
     88
    8989        <String Id="WrongSerialDlg_Header">Girilen seri numarası geçersiz!</String>
    9090    <String Id="WrongSerialDlg_Desc1">Seri numaranızı tekrar girmek için lütfen geri gidin.</String>
    9191    <String Id="WrongSerialDlg_Desc2">Seri numarasını etiket üzerine basıldığı gibi aynen hecesi hecesine yazılmak zorunda olduğunu aklınızdan çıkarmayın.</String>
    92    
    93         <!---->
    94    
     92
     93        <!---->
     94
    9595        <String Id="WarnSaveStatesDlg_Header">Uyarı:</String>
    9696    <String Id="WarnSaveStatesDlg_Header2">Uyumsuz Kaydedilmiş Durum!</String>
    9797    <String Id="WarnSaveStatesDlg_Desc">[ProductName] yükseltildiğinde, zaten mevcut makinelerinizden kaydedilmiş tüm durumlar bundan böyle çalışmayacak! Kurulumdan sonra bunlardan el ile vazgeçmek zorundasınız.</String>
    9898    <String Id="WarnSaveStatesDlg_Proceed">Hemen kuruluma devam edilsin mi?</String>
    99    
    100         <!---->
    101    
     99
     100        <!---->
     101
    102102        <String Id="WarnTAPDevicesDlg_Header">Anamakine Arayüzleri</String>
    103103    <String Id="WarnTAPDevicesDlg_Desc">Önceki sürümdeki makineleriniz için bazı anamakine arayüzleri kullandıysanız, bu kurulumdan sonra onları el ile yeniden oluşturmak zorundasınız.</String>
    104    
    105         <!---->
    106    
     104
     105        <!---->
     106
    107107        <String Id="NetCfgLocked">Şurda belirtilen uygulama yüklemeye devam etmeden önce kapatılmalıdır: "[2]"</String>
    108108
     
    119119
    120120    <!---->
    121    
     121
    122122        <String Id="Customize2Dlg_Header">Özelleştir</String>
    123123    <String Id="Customize2Dlg_Desc">Lütfen aşağıdaki seçeneklerden seçin:</String>
    124124    <String Id="Customize2Dlg_CreateShortcut">Masaüstüne kısayol oluştur</String>
    125125    <String Id="Customize2Dlg_CreateQuickLaunch">Hızlı Başlat Çubuğuna kısayol oluştur</String>
    126    
    127         <!---->
    128    
     126
     127        <!---->
     128
    129129        <String Id="WarnDisconNetIfacesDlg_Title">Uyarı:</String>
    130130    <String Id="WarnDisconNetIfacesDlg_Title2">Ağ Arayüzleri</String>
    131131    <String Id="WarnDisconNetIfacesDlg_Desc">[ProductName] Ağ Oluşturma özelliği kurulumu ağ bağlantınızı sıfırlayacak ve geçici olarak ağınızın bağlantısını kesecek.</String>
    132132    <String Id="WarnDisconNetIfacesDlg_Question">Hemen kuruluma devam edilsin mi?</String>
    133    
    134         <!---->
    135    
     133
     134        <!---->
     135
    136136        <String Id="DiskCostDlg_SpaceRequired">Seçilen özelliklerin kurulumu için gereken disk alanı.</String>
    137137    <String Id="DiskCostDlg_NotEnoughSpace">Vurgulanan bölümler (eğer varsa) şu anki seçilen özellikler için kullanılabilir yeterli disk alanına sahip değil. Ya vurgulanan bölümlerden bazı dosyaları kaldırabilirsiniz ya da yerel sürücüye(lere) daha az özellik yüklemeyi seçebilirsiniz ya da farklı hedef sürücü(leri) seçebilirsiniz.</String>
    138138    <String Id="DiskCostDlg_SpaceRequirements">Disk Alanı Gereksinimleri</String>
    139139    <String Id="DiskCostDlg_VolumeList">{120}{70}{70}{70}{70}</String>
    140    
    141         <!---->
    142    
     140
     141        <!---->
     142
    143143        <String Id="BrowseDlg_BrowseDestFolder">Hedef klasöre gözat</String>
    144144    <String Id="BrowseDlg_ChangeCurFolder">Şu anki hedef klasörü değiştir</String>
     
    147147    <String Id="BrowseDlg_LookIn">&amp;Bakılan yer:</String>
    148148    <String Id="BrowseDlg_FolderName">&amp;Klasör adı:</String>
    149    
    150         <!---->
    151    
     149
     150        <!---->
     151
    152152        <String Id="VerifyReadyDlg_ReadyToBegin">Kur Sihirbazı [InstallMode] kurulumuna başlamaya hazır.</String>
    153153    <String Id="VerifyReadyDlg_ClickInstall">Kuruluma başlamak için Yükle'ye tıklayın. Eğer herhangi bir kurulum ayarınızı gözden geçirmek veya değiştirmek istiyorsanız, Geri'ye tıklayın. Sihirbazdan çıkmak için İptal'e tıklayın.</String>
    154154    <String Id="VerifyReadyDlg_ReadyToInstall">Yüklemek için hazır</String>
    155    
    156         <!---->
    157    
     155
     156        <!---->
     157
    158158        <String Id="ExitDlg_ClickFinish">Kur Sihirbazından çıkmak için Bitir düğmesine tıklayın.</String>
    159159    <String Id="ExitDlg_InstComplete">[ProductName] kurulumu tamamlandı.</String>
    160160    <String Id="ExitDlg_StartVBox">Kurulumdan sonra [ProductName] uygulamasını başlat</String>
    161    
    162         <!---->
    163    
     161
     162        <!---->
     163
    164164        <String Id="FatalErrorDlg_Header">[ProductName] Kur Sihirbazı zamansız sonlandı</String>
    165165    <String Id="FatalErrorDlg_Desc">[ProductName] kur bir hata yüzünden zamansız sonlandı. Sisteminiz değiştirilmedi. Bu programı daha sonraki bir zamanda yüklemek için lütfen kurulumu tekrar çalıştırın.</String>
    166166    <String Id="FatalErrorDlg_Footer">Kur Sihirbazından çıkmak için Bitir düğmesine tıklayın.</String>
    167    
    168         <!---->
    169    
     167
     168        <!---->
     169
    170170        <String Id="FilesInUse_Text">Bu kur tarafından güncellenmesi gereken dosyaları aşağıdaki uygulamalar kullanıyor. Bu uygulamaları kapatın ve sonra kuruluma devam etmek için &amp;Yeniden Dene'ye veya çıkmak için İptal'e tıklayın.</String>
    171171    <String Id="FilesInUse_Description">Şu anda kullanımda olan bazı dosyaların güncellenmesi gerek.</String>
    172172    <String Id="FilesInUse_Title">Kullanımda olan Dosyalar</String>
    173    
    174         <!---->
    175    
     173
     174        <!---->
     175
    176176        <String Id="UserExitDlg_Header">[ProductName] Kur Sihirbazı yarıda kesildi</String>
    177177    <String Id="UserExitDlg_Desc">[ProductName] kur yarıda kesildi. Sisteminiz değiştirilmedi. Bu programı daha sonraki bir zamanda yüklemek için lütfen kurulumu tekrar çalıştırın.</String>
    178178    <String Id="UserExitDlg_Footer">Kur Sihirbazından çıkmak için Bitir düğmesine tıklayın.</String>
    179    
    180         <!---->
    181    
     179
     180        <!---->
     181
    182182        <String Id="ProgressDlg_PleaseWait">Kur Sihirbazı [ProductName] yüklerken lütfen bekleyin. Bu birkaç dakika alabilir.</String>
    183    
    184         <!---->
    185    
     183
     184        <!---->
     185
    186186        <String Id="ResumeDlg_Header">[ProductName] Kur Sihirbazına Devam Ediliyor</String>
    187187    <String Id="ResumeDlg_Desc">Kur Sihirbazı [ProductName] uygulamasının bilgisayarınıza kurulumunu tamamlayacak. Devam etmek için Yükle'ye veya Kur Sihirbazından çıkmak için İptal'e tıklayın.</String>
    188    
    189         <!---->
    190    
     188
     189        <!---->
     190
    191191        <String Id="MaintenanceTypeDlg_Header">Kurulumu Değiştir, Onar veya Kaldır</String>
    192192    <String Id="MaintenanceTypeDlg_SelOption">Uygulanmasını istediğiniz işlemi seçin.</String>
     
    201201    <String Id="MaintenanceTypeDlg_RemoveProgress1">Kaldırılıyor</String>
    202202    <String Id="MaintenanceTypeDlg_RemoveProgress2">kaldırma</String>
    203    
    204         <!---->
    205    
     203
     204        <!---->
     205
    206206        <String Id="MaintenanceWelcomeDlg_Header">[ProductName] Kur Sihirbazına Hoş Geldiniz</String>
    207207    <String Id="MaintenanceWelcomeDlg_Desc">Kur Sihirbazı şu anki kurulumunuzu onarmanıza veya [ProductName] uygulamasını bilgisayarınızdan kaldırmanıza izin verecek. Devam etmek için İleri'ye veya Kur Sihirbazından çıkmak için İptal'e tıklayın.</String>
    208    
     208
    209209        <!---->
    210210
     
    212212    <String Id="OutOfDiskDlg_NotEnoughDiskSpace">Vurgulanan bölümler şu anki seçilen özellikler için kullanılabilir yeterli disk alanına sahip değil. Ya vurgulanan bölümlerden bazı dosyaları kaldırabilirsiniz ya da yerel sürücüye(lere) daha az özellik yüklemeyi seçebilirsiniz ya da farklı hedef sürücü(leri) seçebilirsiniz.</String>
    213213    <String Id="OutOfDiskDlg_OutOfDiskSpace">Yetersiz Disk Alanı</String>
    214    
     214
    215215        <!---->
    216216
     
    219219    <String Id="OutOfRbDiskDlg_OutOfDiskSpace">Yetersiz Disk Alanı</String>
    220220    <String Id="OutOfRbDiskDlg_Desc">Alternatif olarak, yükleyicinin geriye alma işlevselliğini etkisizleştirmeyi seçebilirsiniz. Bu, herhangi bir şekilde kurulumun yarıda kesilmesiyle yükleyicinin bilgisayarınızın orijinal durumuna geri yüklenmesi için izin verir. Geri almayı etkisizleştirme riskini almak isterseniz Evet'e tıklayın.</String>
    221    
    222         <!---->
    223    
     221
     222        <!---->
     223
    224224        <String Id="VerifyRemoveDlg_Header">[ProductName] Kaldır</String>
    225225    <String Id="VerifyRemoveDlg_Desc">Programı bilgisayarınızdan kaldırmayı seçmektesiniz.</String>
    226226    <String Id="VerifyRemoveDlg_ClickRemove">[ProductName] uygulamasını bilgisayarınızdan kaldırmak için Kaldır'a tıklayın. Eğer herhangi bir kurulum ayarınızı gözden geçirmek veya değiştirmek istiyorsanız, Geri'ye tıklayın. Sihirbazdan çıkmak için İptal'e tıklayın.</String>
    227    
    228         <!---->
    229    
     227
     228        <!---->
     229
    230230        <String Id="VerifyRepairDlg_Header">[ProductName] Onar</String>
    231231    <String Id="VerifyRepairDlg_ReadyToBegin">Kur Sihirbazı [ProductName] uygulamasının onarılmasına başlamak için hazır.</String>
    232232    <String Id="VerifyRepairDlg_ClickRepair">[ProductName] kurulumunu onarmak için Onar'a tıklayın. Eğer herhangi bir kurulum ayarınızı gözden geçirmek veya değiştirmek istiyorsanız, Geri'ye tıklayın. Sihirbazdan çıkmak için İptal'e tıklayın.</String>
    233    
     233
    234234        <!---->
    235235
    236236        <String Id="WaitForCostingDlg_PleaseWait">Yükleyici disk alanı gereksinimlerinizi belirlemeyi bitirirken lütfen bekleyin.</String>
    237    
    238         <!---->
    239    
     237
     238        <!---->
     239
    240240        <String Id="MsiRMFilesInUse_Text">Bu kur tarafından güncellenmesi gereken dosyaları aşağıdaki uygulamalar kullanıyor. Kur Sihirbazına onları kapatması ve yeniden başlatmayı denemesi veya daha sonra makineyi yeniden başlatması için izin verebilirsiniz.</String>
    241241    <String Id="MsiRMFilesInUse_Description">Şu anda kullanımda olan bazı dosyaların güncellenmesi gerek.</String>
     
    403403    <String Id="Error1934">Kullanıcı kurulumları makinedeki ilke yoluyla etkisizleştirildi.</String>
    404404    <String Id="Error1935">[2] çevirme bileşenlerinin kurulumu sırasında bir hata meydana geldi. HSONUCU: [3]. {{çevirme arayüzü: [4], işlev: [5], çevirme adı: [6]}}</String>
    405    
     405
    406406        <!-- Own / special errors -->
    407407    <String Id="Error25001">"[2]" uygulamasının kuruluma devam etmesi için kapatılması gerekiyor.</String>
     
    533533    <String Id="ProgressTextUnmoveFilesTemplate">Dosya: [1], Dizin: [9]</String>
    534534    <String Id="ProgressTextUnpublishProduct">Ürün bilgisi yayından kaldırılıyor</String>
    535    
     535
    536536        <String Id="UITextbytes">bayt</String>
    537537    <String Id="UITextGB">GB</String>
  • trunk/src/VBox/Installer/win/NLS/zh_TW.wxl

    r49534 r51009  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <WixLocalization xmlns="http://schemas.microsoft.com/wix/2003/11/localization" Codepage="65001" Culture="zh_TW">
     2<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Codepage="65001" Culture="zh_TW">
    33
    44  <!--
     
    9797    <String Id="WarnSaveStatesDlg_Desc">升級 [ProductName] 時,所有來自已經存在機器的儲存狀態不再能動作!安裝後,您必須手動捨棄。</String>
    9898    <String Id="WarnSaveStatesDlg_Proceed">立即進行安裝嗎?</String>
    99        
     99
    100100    <!---->
    101101
  • trunk/src/VBox/Installer/win/UserInterface.wxi

    r49534 r51009  
    328328                 Also see: http://osdir.com/ml/windows.devel.wix.user/2005-02/msg00300.html -->
    329329            <Control Id="DesktopShortcutCheckBox" Type="CheckBox" X="25" Y="95" Width="200" Height="17"
    330                 Property="INSTALLDESKTOPSHORTCUT" CheckBoxValue="1">
     330                Property="VBOX_INSTALLDESKTOPSHORTCUT" CheckBoxValue="1">
    331331                <Text>!(loc.Customize2Dlg_CreateShortcut)</Text>
    332332            </Control>
    333333            <Control Id="QuicklaunchShortcutCheckBox" Type="CheckBox" X="25" Y="115" Width="200" Height="17"
    334                      Property="INSTALLQUICKLAUNCHSHORTCUT" CheckBoxValue="1">
     334                     Property="VBOX_INSTALLQUICKLAUNCHSHORTCUT" CheckBoxValue="1">
    335335                <Text>!(loc.Customize2Dlg_CreateQuickLaunch)</Text>
    336336            </Control>
    337337            <Control Id="RegisterFileExtensionsCheckBox" Type="CheckBox" X="25" Y="135" Width="200" Height="17"
    338                      Property="REGISTERFILEEXTENSIONS" CheckBoxValue="1">
     338                     Property="VBOX_REGISTERFILEEXTENSIONS" CheckBoxValue="1">
    339339                <Text>!(loc.Customize2Dlg_RegisterFileExtensions)</Text>
    340340            </Control>
     
    509509        <Dialog Id="VBoxExitDlg" Width="370" Height="270" Title="[ProductName] !(loc.Setup)" NoMinimize="yes">
    510510            <Control Id="Finish" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Cancel="yes" Text="!(loc.ButtonText_Finish)">
    511                 <Publish Event="DoAction" Value="ca_StartVBox"><![CDATA[STARTVBOX]]></Publish>
     511                <Publish Event="DoAction" Value="ca_StartVBox"><![CDATA[VBOX_STARTVBOX]]></Publish>
    512512                <Publish Event="EndDialog" Value="Return">1</Publish>
    513513            </Control>
     
    533533                 Also see: http://osdir.com/ml/windows.devel.wix.user/2005-02/msg00300.html -->
    534534            <Control Id="StartVBoxCheckBox" Type="CheckBox" X="135" Y="115" Width="200" Height="17"
    535                 Property="STARTVBOX" CheckBoxValue="1">
     535                Property="VBOX_STARTVBOX" CheckBoxValue="1">
    536536                <Text>!(loc.ExitDlg_StartVBox)</Text>
    537537                <Condition Action="hide">
  • trunk/src/VBox/Installer/win/VBoxKey.wxi

    r37289 r51009  
    22    <RegistryValue Root="HKLM" Key="$(var.Property_RegKey)" Name="Version" Value="%VER%" Type="string" />
    33    <RegistryValue Root="HKLM" Key="$(var.Property_RegKey)" Name="VersionExt" Value="%VER_EXT%" Type="string" />
    4     <RegistryValue Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Value="[INSTALLDIR]" Type="string" />
     4    <RegistryValue Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Value="[MergeRedirectFolder]" Type="string" />
    55</Include>
  • trunk/src/VBox/Installer/win/VBoxMergeApp.wxs

    r50829 r51009  
    33    VirtualBox Windows Installation Script (WiX)
    44
    5     Copyright (C) 2006-2013 Oracle Corporation
     5    Copyright (C) 2006-2014 Oracle Corporation
    66
    77    This file is part of VirtualBox Open Source Edition (OSE), as
     
    1414-->
    1515
    16 <?define Property_RegKey = "Software\$(env.VBOX_VENDOR_SHORT)\VirtualBox" ?>
    17 <?define Property_RegKeyInstall = "Software\$(env.VBOX_VENDOR_SHORT)\VirtualBox\Install" ?>
    18 <?define Property_Version = "$(env.VBOX_VERSION_STRING_RAW)" ?>
    19 <?define Property_VersionExt = "$(env.VBOX_VERSION_STRING)" ?>
    20 <?define Property_Upgrade = "yes" ?>
    21 
    22 <?if $(env.BUILD_TARGET_ARCH) = "amd64" ?>
    23     <?define Property_ProgramFiles = "ProgramFiles64Folder" ?>
    24     <?define Property_Platform     = "x64" ?>
    25     <?define Property_Win64        = "yes" ?>
    26 
    27 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    28     <?define Property_DriverLegacy = "no" ?>
    29 <?else ?>
    30     <?define Property_DriverLegacy = "yes" ?>
    31 <?endif ?>
    32 
    33 <?else ?>
    34     <?define Property_ProgramFiles = "ProgramFilesFolder" ?>
    35     <?define Property_Platform     = "x86" ?>
    36     <?define Property_Win64        = "no" ?>
    37 
    38 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    39    <!-- Note: Settings this to 'no' breaks win2k installs (!) -->
    40     <?define Property_DriverLegacy = "yes" ?>
    41 <?else ?>
    42     <?define Property_DriverLegacy = "yes" ?>
    43 <?endif ?>
    44 
    45 <?endif ?>
    46 
    47 <!-- If we build a combined installer (32- and 64-bit in one installer), we
    48      use two installer "disks": One for all platform-specific stuff and one which
    49      contains all common (platform independent) stuff (like manuals, bitmaps etc). -->
    50 <?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
    51     <?define Property_DiskIdCommon = "2" ?>
    52 <?else ?>
    53     <?define Property_DiskIdCommon = "1" ?>
    54 <?endif ?>
     16<?include Properties.wxi ?>
    5517
    5618<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     
    7234         Old upgrade code of innotek: UpgradeCode="F5FFAEBF-97AE-4038-8F91-4DE719456127" -->
    7335
    74     <Product Id="*"
    75              UpgradeCode="C4BAD770-BFE8-4D2C-A592-693028A7215B"
    76              Name="$(env.VBOX_PRODUCT) $(env.VBOX_VERSION_STRING)"
    77              Language="!(loc.LANG)"
    78              Codepage="1252"
    79              Version="$(var.Property_Version)"
    80              Manufacturer="$(env.VBOX_VENDOR)">
    81 
    82         <Package Id="*" Keywords="Installer"
     36    <Module Id="msm_VBoxApp"
     37            Language="!(loc.LANG)"
     38            Version="$(var.Property_Version)">
     39
     40        <Package Id="d255feb6-597d-4f49-a170-e34f289fa0d3"
     41                 Keywords="Installer, Setup"
    8342                 Description="$(env.VBOX_PRODUCT) $(var.Property_VersionExt) installation package"
    8443                 Comments="$(env.VBOX_PRODUCT) installation package"
    8544                 Manufacturer="$(env.VBOX_VENDOR)"
    8645                 InstallerVersion="200"
    87                  Compressed="yes"
     46                 AdminImage="yes"
    8847                 InstallPrivileges="elevated"
    89                  Platform="$(var.Property_Platform)"/>
    90 
    91         <!-- *************************** Upgrade packages only ******************************* -->
    92         <!-- Minimum and Maximum specify the range of versions we are supposed to update with this upgrade.
    93              IncludeMaximum and IncludeMinimum specify whether the bound value is actually included in the range or not
    94              (IncludeMaximum = yes meaning to find versions below or equal to the version specified in Maximum while
    95              IncludeMaximum = no only finds those below the Maximum).
    96              OnlyDetect tells the installer not to remove the previous product. This is useful as long as we
    97              only change files in the package. -->
    98 
    99         <Upgrade Id="C4BAD770-BFE8-4D2C-A592-693028A7215B"> <!-- Upgrade of Sun xVM VirtualBox >= v1.6.0 -->
    100 
    101             <!-- Upgrade is flagged if current-install is newer than or equal to package - TODO: should make a dialog appear asking user to confirm downgrade.  -->
    102             <!--- Setting "OnlyDetect" to "no" makes the installer uninstall an already newer installed version. -->
    103             <UpgradeVersion Property="NEWERVERSIONDETECTED" Minimum="$(var.Property_Version)" OnlyDetect="no" />
    104 
    105             <!-- Flag is set if the install will trigger an upgrade of an existing install -->
    106             <UpgradeVersion Property="PREVIOUSVERSIONSINSTALLED" Minimum="1.0.0.0" Maximum="$(var.Property_Version)" IncludeMaximum="yes" />
    107 
    108         </Upgrade>
    109 
    110         <!-- The product's icon table. -->
    111         <Icon Id="IconVirtualBox" SourceFile="$(env.VBOX_WINDOWS_ICON_FILE)" />
    112 
    113         <!-- Global properties. -->
    114         <Property Id="ARPPRODUCTICON">IconVirtualBox</Property>
    115         <Property Id="ARPURLINFOABOUT">http://www.virtualbox.org</Property>
    116         <Property Id="ARPURLUPDATEINFO">http://www.virtualbox.org</Property>
    117         <Property Id="INSTALLDESKTOPSHORTCUT" Value="1"></Property>
    118         <Property Id="INSTALLQUICKLAUNCHSHORTCUT" Value="1"></Property>
    119         <Property Id="REGISTERFILEEXTENSIONS" Value="1"></Property>
    120         <Property Id="STARTVBOX" Value="1"></Property>
    121 
    122         <!-- Install the product for all users on the system -->
    123         <Property Id="ALLUSERS"><![CDATA[1]]></Property>
    124 
    125         <!-- Make sure installation will not start on anything other but the NT family -->
    126 <?if $(env.BUILD_TARGET_ARCH) = "amd64" ?>
    127         <Condition Message="!(loc.Only64Bit)">
    128             VersionNT64
    129         </Condition>
    130 <?else ?>
    131         <Condition Message="!(loc.Only32Bit)">
    132             NOT VersionNT64
    133         </Condition>
    134 
    135         <Condition Message="!(loc.WrongOS)">
    136             NOT VersionNT=500 AND NOT Version9X AND NOT VersionNT64
    137         </Condition>
    138 
    139 <?endif ?>
    140 
    141         <Condition Message="!(loc.NeedAdmin)">
    142             Privileged
    143         </Condition>
    144 
    145         <!-- Force overwriting all files and re-create shortcuts to guarantee a working environment -->
    146         <Property Id='REINSTALLMODE' Value='amus'/>
     48                 Platform="$(var.Property_Platform)"
     49                 SummaryCodepage="1252"/>
    14750
    14851        <!-- Custom actions -->
    149 
    150         <!-- Figure out where a previous installation was, if any -->
    151 <?if $(env.BUILD_TARGET_ARCH) = "amd64" ?>
    152         <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFiles64Folder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
    153 
    154         <Property Id="EXISTINGINSTALLDIR" Secure="yes">
    155             <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Win64="$(var.Property_Win64)"/>
    156         </Property>
    157         <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
    158 <?else ?>
    159         <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFilesFolder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
    160 
    161         <Property Id="EXISTINGINSTALLDIR" Secure="yes">
    162             <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Win64="$(var.Property_Win64)"/>
    163         </Property>
    164         <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
    165 <?endif ?>
    166 
    16752        <Binary Id="VBoxInstallHelper" SourceFile="$(env.PATH_OUT)\bin\VBoxInstallHelper.dll" />
    168         <CustomAction Id="ca_CheckSerial" BinaryKey="VBoxInstallHelper" DllEntry="CheckSerial" Impersonate="no"/>
    169 
    170         <CustomAction Id="ca_InstallPythonAPI" BinaryKey="VBoxInstallHelper" DllEntry="InstallPythonAPI" Execute="deferred" Return="check" Impersonate="no"/>
    171         <CustomAction Id="ca_InstallPythonAPIArgs" Property="ca_InstallPythonAPI" Value="[INSTALLDIR]" Execute="immediate"/>
    172 
    173         <CustomAction Id="ca_InstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="InstallBranding" Execute="deferred" Return="check" Impersonate="no"/>
    174         <CustomAction Id="ca_InstallBrandingArgs" Property="ca_InstallBranding" Value="[INSTALLDIR]" Execute="immediate"/>
    175 
    176         <CustomAction Id="ca_UninstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="UninstallBranding" Execute="deferred" Return="check" Impersonate="no"/>
    177         <CustomAction Id="ca_UninstallBrandingArgs" Property="ca_UninstallBranding" Value="[INSTALLDIR]" Execute="immediate"/>
    178 
    179         <CustomAction Id="ca_UninstallTAPInstances" BinaryKey="VBoxInstallHelper"
    180                       DllEntry="UninstallTAPInstances" Execute="deferred" Return="check" Impersonate="no"/>
    181 
    182 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
    183         <CustomAction Id="ca_CreateHostOnlyInterface" BinaryKey="VBoxInstallHelper"  DllEntry="CreateHostOnlyInterface" Execute="deferred" Return="check" Impersonate="no"/>
    184         <CustomAction Id="ca_CreateHostOnlyInterfaceArgs" Property="ca_CreateHostOnlyInterface" Value="[INSTALLDIR]" Execute="immediate"/>
    185 
    186         <CustomAction Id="ca_RemoveHostOnlyInterfaces" BinaryKey="VBoxInstallHelper"  DllEntry="RemoveHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
    187         <CustomAction Id="ca_StopHostOnlyInterfaces" BinaryKey="VBoxInstallHelper"  DllEntry="StopHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
    188 
    189         <CustomAction Id="ca_UpdateHostOnlyInterfaces" BinaryKey="VBoxInstallHelper"  DllEntry="UpdateHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
    190         <CustomAction Id="ca_UpdateHostOnlyInterfacesArgs" Property="ca_UpdateHostOnlyInterfaces" Value="[INSTALLDIR]" Execute="immediate"/>
    191 
    192         <CustomAction Id="ca_InstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="InstallNetFlt" Execute="deferred" Return="check" Impersonate="no"/>
    193         <CustomAction Id="ca_InstallNetFltArgs" Property="ca_InstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
    194 
    195         <CustomAction Id="ca_RollbackInstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="UninstallNetFlt" Execute="rollback" Impersonate="no"/>
    196         <CustomAction Id="ca_RollbackInstallNetFltArgs" Property="ca_RollbackInstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
    197 
    198         <CustomAction Id="ca_UninstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="UninstallNetFlt" Execute="deferred" Return="check" Impersonate="no"/>
    199         <CustomAction Id="ca_UninstallNetFltArgs" Property="ca_UninstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
    200 
    201         <CustomAction Id="ca_RollbackUninstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="InstallNetFlt" Execute="rollback" Impersonate="no"/>
    202         <CustomAction Id="ca_RollbackUninstallNetFltArgs" Property="ca_RollbackUninstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
    203 <?endif ?>
    204 
    205         <CustomAction Id="ca_StartVBox" FileKey="file_VirtualBox.exe" ExeCommand="" Return="asyncNoWait" Impersonate="yes" />
    206 
    207         <!-- Detect old Sun installation -->
    208         <!-- Force a manual uninstall of an already installed Sun VirtualBox version first -->
    209         <!--<Property Id="VBOXSUN">
    210             <RegistrySearch Id="RegSearchSunVersion" Root="HKLM" Key="SOFTWARE\Sun\VirtualBox" Name="Version" Type="raw" Win64="$(var.Property_Win64)"/>
    211         </Property>
    212         <Condition Message="!(loc.SunFound)">
    213             NOT VBOXSUN
    214         </Condition>-->
    215 
    216         <!-- Detect old innotek installation -->
    217         <!-- Force a manual uninstall of an already installed innotek VirtualBox version first -->
    218         <Property Id="VBOXINNOTEK">
    219             <RegistrySearch Id="RegSearchInnotekVersion" Root="HKLM" Key="SOFTWARE\Innotek\VirtualBox" Name="Version" Type="raw" Win64="$(var.Property_Win64)"/>
    220         </Property>
    221         <Condition Message="!(loc.InnotekFound)">
    222             NOT VBOXINNOTEK
    223         </Condition>
    224 
    225         <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
    226 <?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
    227         <Media Id="2" Cabinet="common.cab" EmbedCab="no" CompressionLevel="high" />
    228 <?endif ?>
    229 
    230         <!-- Here comes the file/directory list. -->
     53
     54        <!-- Here comes the file/directory list -->
    23155        <Directory Id="TARGETDIR" Name="SourceDir">
    232            <Directory Id="$(var.Property_ProgramFiles)" Name="PFiles">
    233                 <Directory Id="INSTALLDIR" Name="$(env.VBOX_PRODUCT)">
     56            <Directory Id="MergeRedirectFolder" FileSource=".">
    23457
    23558<?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
    236                     <Directory Id="dir_Documents" Name="doc">
    237                         <!-- The documentation is a separate component. This allows to split the install process
    238                              into pieces if ever necessary. Maintenance is easier, too. The following component
    239                              will be installed in the "doc" folder. -->
    240                         <Component Id="cp_Docs" Guid="40BD12C5-89A8-4B81-8A5E-5EEE2C2763C4">
    241                             <?include $(env.PATH_TARGET)\Files_Doc.wxi ?>
     59                <Directory Id="dir_Documents" Name="doc">
     60                    <!-- The documentation is a separate component. This allows to split the install process
     61                         into pieces if ever necessary. Maintenance is easier, too. The following component
     62                         will be installed in the "doc" folder. -->
     63                    <Component Id="cp_Docs" Guid="40BD12C5-89A8-4B81-8A5E-5EEE2C2763C4">
     64                        <?include $(env.PATH_TARGET)\Files_Doc.wxi ?>
     65                    </Component>
     66                </Directory>
     67<?endif ?>
     68                <!-- Device driver directory -->
     69                <Directory Id="dir_Drivers" Name="drivers">
     70                    <Directory Id="dir_VBoxDrv" Name="vboxdrv">
     71                        <Component Id="cp_VBoxDrv" Guid="D3E2F2BB-569F-46A2-836C-BDF30FF1EDF8" Win64="$(var.Property_Win64)">
     72                            <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes"
     73                                            Legacy="$(var.Property_DriverLegacy)" Sequence="2" PlugAndPlayPrompt="no"/>
     74                            <File Id="file_VBoxDrv.sys" Name="VBoxDrv.sys" KeyPath="yes"
     75                                  Source="$(env.PATH_OUT)\bin\VBoxDrv.sys"/>
     76                            <File Id="file_VBoxDrv.inf" Name="VBoxDrv.inf"
     77                                  Source="$(env.PATH_OUT)\bin\VBoxDrv.inf" />
     78<?if $(env.VBOX_SIGNING_MODE) != none ?>
     79                            <File Id="file_VBoxDrv.cat" Name="VBoxDrv.cat"
     80                                  Source="$(env.PATH_OUT)\bin\VBoxDrv.cat" />
     81<?endif ?>
    24282                        </Component>
    24383                    </Directory>
    244 <?endif ?>
    245                     <!-- Device driver directory -->
    246                     <Directory Id="dir_Drivers" Name="drivers">
    247                         <Directory Id="dir_VBoxDrv" Name="vboxdrv">
    248                             <Component Id="cp_VBoxDrv" Guid="D3E2F2BB-569F-46A2-836C-BDF30FF1EDF8" Win64="$(var.Property_Win64)">
    249                                 <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes"
    250                                                 Legacy="$(var.Property_DriverLegacy)" Sequence="2" PlugAndPlayPrompt="no"/>
    251                                 <File Id="file_VBoxDrv.sys" Name="VBoxDrv.sys"   KeyPath="yes"
    252                                       Source="$(env.PATH_OUT)\bin\VBoxDrv.sys"/>
    253                                 <File Id="file_VBoxDrv.inf" Name="VBoxDrv.inf"
    254                                       Source="$(env.PATH_OUT)\bin\VBoxDrv.inf" />
    255 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    256                                 <File Id="file_VBoxDrv.cat" Name="VBoxDrv.cat"
    257                                       Source="$(env.PATH_OUT)\bin\VBoxDrv.cat" />
    258 <?endif ?>
    259                             </Component>
    260                         </Directory>
    261 
    262                         <Directory Id="dir_USB" Name="USB">
    263                             <Directory Id="dir_USBFilter" Name="filter">
    264                                 <Component Id="cp_USBFilterDriver" Guid="B7D782D2-96DF-4775-A0E1-A76CF7B04B65" Win64="$(var.Property_Win64)">
    265                                     <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes"
    266                                                     Legacy="$(var.Property_DriverLegacy)" Sequence="0" PlugAndPlayPrompt="no"/>
    267                                     <File Id="file_VBoxUSBMon.sys" Name="VBoxUSBMon.sys"
    268                                           Source="$(env.PATH_OUT)\bin\VBoxUSBMon.sys" />
    269                                     <File Id="file_VBoxUSBMon.inf" Name="VBoxUSBMon.inf"
    270                                           Source="$(env.PATH_OUT)\bin\VBoxUSBMon.inf" />
    271 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    272                                     <File Id="file_VBoxUSBMon.cat" Name="VBoxUSBMon.cat"
    273                                           Source="$(env.PATH_OUT)\bin\VBoxUSBMon.cat" />
    274 <?endif ?>
    275                                 </Component>
    276                             </Directory>
    277 
    278                             <Directory Id="dir_USBDevice" Name="device">
    279                                 <Component Id="cp_USBDeviceDriver" Guid="010FE46A-E358-43E2-8BDC-38BC8BEC82E0" Win64="$(var.Property_Win64)">
    280                                     <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes"
    281                                                     Legacy="$(var.Property_DriverLegacy)" Sequence="0" PlugAndPlayPrompt="no"/>
    282                                     <File Id="file_VBoxUSB.sys" Name="VBoxUSB.sys"
    283                                           Source="$(env.PATH_OUT)\bin\VBoxUSB.sys" />
    284                                     <File Id="file_VBoxUSB.inf" Name="VBoxUSB.inf"
    285                                           Source="$(env.PATH_OUT)\bin\VBoxUSB.inf" />
    286 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    287                                     <File Id="file_VBoxUSB.cat" Name="VBoxUSB.cat"
    288                                           Source="$(env.PATH_OUT)\bin\VBoxUSB.cat" />
    289 <?endif ?>
    290                                 </Component>
    291                             </Directory>
    292                         </Directory>
    293 
    294 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
    295                         <Directory Id="dir_Network" Name="network">
    296                             <Directory Id="dir_NetFlt" Name="netflt">
    297                                 <Component Id="cp_NetFltDriver" Guid="F0A02F6B-A349-42f8-A2EB-569DCAAAF846" Win64="$(var.Property_Win64)">
    298                                     <File Id="file_VBoxNetFlt.sys" Name="VBoxNetFlt.sys"   KeyPath="yes"
    299                                           Source="$(env.PATH_OUT)\bin\VBoxNetFlt.sys" Checksum="yes"/>
    300                                     <File Id="file_VBoxNetFltNobj.sys" Name="VBoxNetFltNobj.dll"
    301                                           Source="$(env.PATH_OUT)\bin\VBoxNetFltNobj.dll" Checksum="yes"/>
    302                                     <File Id="file_VBoxNetFltM.inf" Name="VBoxNetFltM.inf"
    303                                           Source="$(env.PATH_OUT)\bin\VBoxNetFltM.inf" />
    304                                     <File Id="file_VBoxNetFlt.inf" Name="VBoxNetFlt.inf"
    305                                           Source="$(env.PATH_OUT)\bin\VBoxNetFlt.inf" />
    306 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    307                                     <File Id="file_VBoxNetFlt.cat" Name="VBoxNetFlt.cat"
    308                                           Source="$(env.PATH_OUT)\bin\VBoxNetFlt.cat" />
    309 <?endif ?>
    310                                 </Component>
    311                             </Directory>
    312 
    313                             <Directory Id="dir_NetAdp" Name="netadp">
    314                                 <Component Id="cp_NetAdpDriver" Guid="7adf3e12-af3c-4d36-8bec-36d5064cf84f" Win64="$(var.Property_Win64)">
    315                                     <File Id="file_VBoxNetAdp.sys" Name="VBoxNetAdp.sys" KeyPath="yes"
    316                                           Source="$(env.PATH_OUT)\bin\VBoxNetAdp.sys" Checksum="yes"/>
    317                                     <File Id="file_VBoxNetAdp.inf" Name="VBoxNetAdp.inf"
    318                                           Source="$(env.PATH_OUT)\bin\VBoxNetAdp.inf" />
    319 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    320                                     <File Id="file_VBoxNetAdp.cat" Name="VBoxNetAdp.cat"
    321                                           Source="$(env.PATH_OUT)\bin\VBoxNetAdp.cat" />
    322 <?endif ?>
    323                                 </Component>
    324                             </Directory>
    325                         </Directory>
    326 <?endif ?>
    327                     </Directory> <!-- Directory "drivers" -->
    328 
    329 
    330                     <!-- National Language Support directory -->
    331                     <Directory Id="dir_NLS" Name="nls">
    332                         <Component Id="cp_NLS" Guid="D63517D7-1CF3-4D06-B3EE-C561E323069B" Win64="$(var.Property_Win64)">
    333                             <!-- Include the autogenerated NLS file list -->
    334                             <?include $(env.PATH_TARGET)\VBoxGuiNLS.wxi ?>
    335                         </Component>
    336                     </Directory>
     84                </Directory> <!-- Directory "drivers" -->
     85
     86                <!-- National Language Support directory -->
     87                <Directory Id="dir_NLS" Name="nls">
     88                    <Component Id="cp_NLS" Guid="D63517D7-1CF3-4D06-B3EE-C561E323069B" Win64="$(var.Property_Win64)">
     89                        <!-- Include the autogenerated NLS file list -->
     90                        <?include $(env.PATH_TARGET)\VBoxGuiNLS.wxi ?>
     91                    </Component>
     92                </Directory>
    33793
    33894<?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
    339                     <Directory Id="dir_X86" Name="x86">
    340                         <!-- The 32-bit client COM component (see also cp_MainCom below). -->
    341                         <Component Id="cp_MainCOM_x86" Guid="B600824E-4A25-2EB3-4B44-3D8CB7F9B92D" Win64="no">
    342                             <File Id="VBoxClient_x86" Name="VBoxClient-x86.dll"
    343                                 Source="$(env.PATH_OUT)\bin\x86\VBoxClient-x86.dll" KeyPath="yes">
    344                             </File>
    345                             <File Id="VBoxRT_x86" Name="VBoxRT-x86.dll"
    346                                 Source="$(env.PATH_OUT)\bin\x86\VBoxRT-x86.dll">
    347                             </File>
    348                             <?include $(env.PATH_TARGET)\VirtualBox_TypeLib_x86.wxi ?>
     95                <Directory Id="dir_X86" Name="x86">
     96                    <!-- The 32-bit client COM component (see also cp_MainCom below). -->
     97                    <Component Id="cp_MainCOM_x86" Guid="B600824E-4A25-2EB3-4B44-3D8CB7F9B92D" Win64="no">
     98                        <File Id="VBoxClient_x86" Name="VBoxClient-x86.dll"
     99                            Source="$(env.PATH_OUT)\bin\x86\VBoxClient-x86.dll" KeyPath="yes">
     100                        </File>
     101                        <File Id="VBoxRT_x86" Name="VBoxRT-x86.dll"
     102                            Source="$(env.PATH_OUT)\bin\x86\VBoxRT-x86.dll">
     103                        </File>
     104                        <?include $(env.PATH_TARGET)\VirtualBox_TypeLib_x86.wxi ?>
    349105<?if $(env.VBOX_VCC_TOOL_STEM) = "VCC100" ?>
    350                             <!-- MS C/C++ v10.0 32 bit Runtime DLL files. -->
    351                             <File Id="file_msvcr100.dll_x86" Name="msvcr100.dll"
    352                                   Source="$(env.PATH_OUT)\bin\x86\msvcr100.dll" />
    353                             <File Id="file_msvcp100.dll_x86" Name="msvcp100.dll"
    354                                   Source="$(env.PATH_OUT)\bin\x86\msvcp100.dll" />
    355 <?endif?>
    356 <?if $(env.VBOX_VCC_TOOL_STEM) = "VCC110" ?>
    357                             <!-- MS C/C++ v11.0 Runtime DLL files. -->
    358                             <File Id="file_msvcr110.dll_x86" Name="msvcr110.dll"
    359                                   Source="$(env.PATH_OUT)\bin\x86\msvcr110.dll" />
    360                             <File Id="file_msvcp110.dll_x86" Name="msvcp110.dll"
    361                                   Source="$(env.PATH_OUT)\bin\x86\msvcp110.dll" />
    362 <?endif?>
    363                         </Component>
    364                     </Directory>
    365 <?endif?>
    366 
    367                     <!-- COM components have a separate entry mainly because of the KeyPath attribute (that hints the
    368                          TypeLib element where to take the TLB resource from) may appear only once per Component. -->
    369                     <Component Id="cp_MainCOM" Guid="CD4A3C6C-C2D5-428D-90A1-B6DA3D0777D6" Win64="$(var.Property_Win64)">
    370 
    371                         <!-- File ID *must not* be changed because of our typelib template generation file! -->
    372                         <File Id="VBoxSVC" Name="VBoxSVC.exe"
    373                               Source="$(env.PATH_OUT)\bin\VBoxSVC.exe">
    374                         </File>
    375 
    376                         <!-- We set KeyPath on this file to instruct TypeLib to read the TLB resource from it
    377                              and create appropriate Interface registry entries. Note that the same TLB is present
    378                              in VBoxSVC.exe - it's just a matter of choice which one to use -->
    379                         <!-- File ID *must not* be changed because of our typelib template generation file! -->
    380                         <File Id="VBoxC" Name="VBoxC.dll"
    381                               Source="$(env.PATH_OUT)\bin\VBoxC.dll" KeyPath="yes">
    382                         </File>
    383 
    384                         <!-- Include the autogenerated TypeLib block -->
    385                         <?include $(env.PATH_TARGET)\VirtualBox_TypeLib.wxi ?>
    386 
    387                     </Component>
    388 
    389                     <!--
    390 
    391                     <Component Id="cp_StartMenuShortcut" Guid="1C137D24-E599-47BD-98D0-2F62F202A8EA" Win64="$(var.Property_Win64)">
    392                         <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string"
    393                                        Value="installed" KeyPath="yes" />
    394                         <Shortcut Id="ShortcutStartMenuVBox" Directory="ProgramMenuDir"
    395                                   Name="VirtualBox" WorkingDirectory="INSTALLDIR" Advertise="no" Target="VirtualBox.exe" />
    396                         <RemoveFolder Id="ShortcutStartMenuVBoxRemove" On="uninstall" />
    397                     </Component>-->
    398 
    399                     <!---->
    400 
    401                     <Component Id="cp_RegisterExtensions" Guid="FEB8943E-5D60-4E2D-846F-458207019D40" Win64="$(var.Property_Win64)">
    402                         <Condition>REGISTERFILEEXTENSIONS</Condition>
    403                         <!-- Register file extensions. Note: Extension Id's *must not* be changed! These specify the actual
    404                              file extension to handle. Also, here would be the place to add more fancy DDE stuff later.
    405                              Important: The IDs in "IconIndex" *must* be matching "Resources\resource.h". -->
    406                         <ProgId Id="progId_VirtualBox.Shell.vbox" Description="VirtualBox Machine Definition" Icon="file_VBoxRes.dll" IconIndex="-201">
    407                             <Extension Id="vbox" ContentType="application/x-virtualbox-vbox">
    408                                 <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
    409                             </Extension>
    410                         </ProgId>
    411                         <ProgId Id="progId_VirtualBox.Shell.vbox-extpack" Description="VirtualBox Extension Pack" Icon="file_VBoxRes.dll" IconIndex="-202">
    412                             <Extension Id="vbox-extpack" ContentType="application/x-virtualbox-vbox-extpack">
    413                                 <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
    414                             </Extension>
    415                         </ProgId>
    416                         <ProgId Id="progId_VirtualBox.Shell.ovf" Description="Open Virtualization Format" Icon="file_VBoxRes.dll" IconIndex="-301">
    417                             <Extension Id="ovf" ContentType="application/x-virtualbox-ovf">
    418                                 <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
    419                             </Extension>
    420                         </ProgId>
    421                         <ProgId Id="progId_VirtualBox.Shell.ova" Description="Open Virtualization Format Archive" Icon="file_VBoxRes.dll" IconIndex="-302">
    422                             <Extension Id="ova" ContentType="application/x-virtualbox-ova">
    423                                 <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
    424                             </Extension>
    425                         </ProgId>
    426                         <ProgId Id="progId_VirtualBox.Shell.vdi" Description="Virtual Disk Image" Icon="file_VBoxRes.dll" IconIndex="-303">
    427                             <Extension Id="vdi" ContentType="application/x-virtualbox-vdi" />
    428                         </ProgId>
    429                         <ProgId Id="progId_VirtualBox.Shell.vmdk" Description="Virtual Machine Disk Format" Icon="file_VBoxRes.dll" IconIndex="-304">
    430                             <Extension Id="vmdk" ContentType="application/x-virtualbox-vmdk" />
    431                         </ProgId>
    432                         <ProgId Id="progId_VirtualBox.Shell.vhd" Description="Virtual Hard Disk" Icon="file_VBoxRes.dll" IconIndex="-305">
    433                             <Extension Id="vhd" ContentType="application/x-virtualbox-vhd" />
    434                         </ProgId>
    435                         <ProgId Id="progId_VirtualBox.Shell.hdd" Description="Virtual Hard Disk" Icon="file_VBoxRes.dll" IconIndex="-306">
    436                             <Extension Id="hdd" ContentType="application/x-virtualbox-hdd" />
    437                         </ProgId>
    438                     </Component> <!-- RegisterExtensions -->
    439 
    440                     <!-- All Binaries, DLLs (except COM) and drivers are in one component because they belong together. Additional
    441                          binaries e.g. test tools, utilities etc. should be in another component so they"re clearly separated. -->
    442                     <Component Id="cp_MainBinaries" Guid="5C8FE57A-F744-4DE0-AA3F-A563F486AD98" Win64="$(var.Property_Win64)">
    443 
    444                         <!-- Set required environment variables. -->
    445                         <Environment Id="env_VBoxInstallDir" Action="set" Name="VBOX_INSTALL_PATH"
    446                                      System="yes" Part="last" Permanent="no" Value="[INSTALLDIR]" />
    447 
    448                         <!-- Files -->
    449 <?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
    450                         <!-- Include all user manual .CHM files (file is generated by makefile). -->
    451                         <?include $(env.PATH_TARGET)\Files_Main.wxi ?>
    452 <?endif ?>
    453                         <!-- Include all license files (file is generated by makefile). -->
    454                         <?include $(env.PATH_TARGET)\Files_License.wxi ?>
    455 
    456                         <!-- Frontends -->
    457                         <File Id="file_VBoxManage.exe" Name="VBoxManage.exe"
    458                               Source="$(env.PATH_OUT)\bin\VBoxManage.exe" />
    459                         <File Id="file_VBoxHeadless.exe" Name="VBoxHeadless.exe"
    460                               Source="$(env.PATH_OUT)\bin\VBoxHeadless.exe">
    461                             <!-- Create a simple shortcut for VBoxVRDP, which is not present anymore, pointing to VBoxHeadless.exe -->
    462                        <!--     <Shortcut Id="ShortcutVBoxVRDP" Directory="INSTALLDIR" Name="VBoxVRDP" Show="normal" WorkingDirectory="INSTALLDIR"/> -->
    463                         </File>
    464                         <File Id="file_VBoxBalloonCtrl.exe" Name="VBoxBalloonCtrl.exe"
    465                               Source="$(env.PATH_OUT)\bin\VBoxBalloonCtrl.exe"/>
    466 
    467                         <!-- Misc tools -->
    468                         <File Id="file_VBoxNetDHCP.exe" Name="VBoxNetDHCP.exe"
    469                               Source="$(env.PATH_OUT)\bin\VBoxNetDHCP.exe"/>
    470                         <File Id="file_VBoxNetNAT.exe" Name="VBoxNetNAT.exe"
    471                               Source="$(env.PATH_OUT)\bin\VBoxNetNAT.exe"/>
    472 <?if $(env.VBOX_WITH_EXTPACK) = "yes" ?>
    473                         <File Id="file_VBoxExtPackHelperApp.exe" Name="VBoxExtPackHelperApp.exe"
    474                               Source="$(env.PATH_OUT)\bin\VBoxExtPackHelperApp.exe"/>
    475 <?endif ?>
    476                         <!-- VBox DLL files -->
    477                         <File Id="file_VBoxDD.dll" Name="VBoxDD.dll"
    478                               Source="$(env.PATH_OUT)\bin\VBoxDD.dll" />
    479                         <File Id="file_VBoxDD2.dll" Name="VBoxDD2.dll"
    480                               Source="$(env.PATH_OUT)\bin\VBoxDD2.dll" />
    481                         <File Id="file_VBoxDDU.dll" Name="VBoxDDU.dll"
    482                               Source="$(env.PATH_OUT)\bin\VBoxDDU.dll" />
    483                         <File Id="file_VBoxRT.dll" Name="VBoxRT.dll"
    484                               Source="$(env.PATH_OUT)\bin\VBoxRT.dll" />
    485                         <File Id="file_VBoxREM.dll" Name="VBoxREM.dll"
    486                               Source="$(env.PATH_OUT)\bin\VBoxREM.dll" />
    487 <?if $(env.BUILD_TARGET_ARCH) = "x86" ?>
    488                         <File Id="file_VBoxREM32.dll" Name="VBoxREM32.dll"
    489                               Source="$(env.PATH_OUT)\bin\VBoxREM32.dll" />
    490                         <File Id="file_VBoxREM64.dll" Name="VBoxREM64.dll"
    491                               Source="$(env.PATH_OUT)\bin\VBoxREM64.dll" />
    492 <?endif ?>
    493                         <File Id="file_VBoxVMM.dll" Name="VBoxVMM.dll"
    494                               Source="$(env.PATH_OUT)\bin\VBoxVMM.dll" />
    495 <?if $(env.VBOX_WITH_VRDP) = "yes" ?>
    496                         <File Id="file_VBoxVRDP.dll" Name="VBoxVRDP.dll"
    497                               Source="$(env.PATH_OUT)\bin\VBoxVRDP.dll" />
    498 <?endif ?>
    499                         <File Id="file_VBoxSharedFolders.dll" Name="VBoxSharedFolders.dll"
    500                               Source="$(env.PATH_OUT)\bin\VBoxSharedFolders.dll" />
    501                         <File Id="file_VBoxSharedClipboard.dll" Name="VBoxSharedClipboard.dll"
    502                               Source="$(env.PATH_OUT)\bin\VBoxSharedClipboard.dll" />
    503 <?if $(env.VBOX_WITH_DRAG_AND_DROP)= "yes" ?>
    504                         <File Id="file_VBoxDragAndDropSvc.dll" Name="VBoxDragAndDropSvc.dll"
    505                               Source="$(env.PATH_OUT)\bin\VBoxDragAndDropSvc.dll" />
    506 <?endif ?>
    507 <?if $(env.VBOX_WITH_GUEST_PROPS) = "yes" ?>
    508                         <File Id="file_VBoxGuestPropSvc.dll" Name="VBoxGuestPropSvc.dll"
    509                               Source="$(env.PATH_OUT)\bin\VBoxGuestPropSvc.dll" />
    510 <?endif ?>
    511 <?if $(env.VBOX_WITH_GUEST_CONTROL) = "yes" ?>
    512                         <File Id="file_VBoxGuestControlSvc.dll" Name="VBoxGuestControlSvc.dll"
    513                               Source="$(env.PATH_OUT)\bin\VBoxGuestControlSvc.dll" />
    514 <?endif ?>
    515                         <File Id="file_VBoxHostChannel.dll" Name="VBoxHostChannel.dll"
    516                               Source="$(env.PATH_OUT)\bin\VBoxHostChannel.dll" />
    517                         <File Id="file_VBoxAuth.dll" Name="VBoxAuth.dll"
    518                               Source="$(env.PATH_OUT)\bin\VBoxAuth.dll" />
    519                         <File Id="file_VBoxAuthSimple.dll" Name="VBoxAuthSimple.dll"
    520                               Source="$(env.PATH_OUT)\bin\VBoxAuthSimple.dll" />
    521 
    522                         <!-- Include resource DLL (icons, ...). -->
    523                         <File Id="file_VBoxRes.dll" Name="VBoxRes.dll" DiskId="$(var.Property_DiskIdCommon)"
    524                               Source="$(env.PATH_OUT)\bin\VBoxRes.dll" />
    525 
    526                         <File Id="file_VMMGC.gc" Name="VMMGC.gc"
    527                               Source="$(env.PATH_OUT)\bin\VMMGC.gc" />
    528                         <File Id="file_VBoxDDGC.gc" Name="VBoxDDGC.gc"
    529                               Source="$(env.PATH_OUT)\bin\VBoxDDGC.gc" />
    530                         <File Id="file_VBoxDD2GC.gc" Name="VBoxDD2GC.gc"
    531                               Source="$(env.PATH_OUT)\bin\VBoxDD2GC.gc" />
    532 
    533                         <File Id="file_VMMR0.r0" Name="VMMR0.r0"
    534                               Source="$(env.PATH_OUT)\bin\VMMR0.r0" />
    535                         <File Id="file_VBoxDDR0.r0" Name="VBoxDDR0.r0"
    536                               Source="$(env.PATH_OUT)\bin\VBoxDDR0.r0" />
    537                         <File Id="file_VBoxDD2R0.r0" Name="VBoxDD2R0.r0"
    538                               Source="$(env.PATH_OUT)\bin\VBoxDD2R0.r0" />
    539 
    540 <?if $(env.VBOX_WITH_CROGL) = "yes" ?>
    541                         <File Id="file_VBoxTestOGL.exe" Name="VBoxTestOGL.exe"
    542                               Source="$(env.PATH_OUT)\bin\VBoxTestOGL.exe" />
    543 <?endif ?>
    544                         <!-- Qt frontend -->
    545                         <File Id="file_VirtualBox.exe" Name="VirtualBox.exe"
    546                               Source="$(env.PATH_OUT)\bin\VirtualBox.exe">
    547                         </File>
    548                         <File Id="file_QtCoreVBox4.dll" Name="QtCoreVBox4.dll"
    549                               Source="$(env.PATH_OUT)\bin\QtCoreVBox4.dll" />
    550                         <File Id="file_QtGuiVBox4.dll" Name="QtGuiVBox4.dll"
    551                               Source="$(env.PATH_OUT)\bin\QtGuiVBox4.dll" />
    552                         <File Id="file_QtNetworkVBox4.dll" Name="QtNetworkVBox4.dll"
    553                               Source="$(env.PATH_OUT)\bin\QtNetworkVBox4.dll" />
    554 <?if $(env.VBOX_WITH_DEBUGGER_GUI) = "yes" ?>
    555                         <File Id="file_VBoxDbg.dll" Name="VBoxDbg.dll"
    556                               Source="$(env.PATH_OUT)\bin\VBoxDbg.dll" />
    557 <?endif ?>
    558 <?if $(env.VBOX_GUI_USE_QGL) = "yes" ?>
    559                         <File Id="file_QtOpenGLVBox4.dll" Name="QtOpenGLVBox4.dll"
    560                               Source="$(env.PATH_OUT)\bin\QtOpenGLVBox4.dll" />
    561 <?endif?>
    562 
    563 <?if $(env.VBOX_VCC_TOOL_STEM) = "VCC100" ?>
    564                         <!-- MS C/C++ v10.0 Runtime DLL files. -->
    565                         <File Id="file_msvcr100.dll" Name="msvcr100.dll"
    566                               Source="$(env.PATH_OUT)\bin\msvcr100.dll" />
    567                         <File Id="file_msvcp100.dll" Name="msvcp100.dll"
    568                               Source="$(env.PATH_OUT)\bin\msvcp100.dll" />
     106                        <!-- MS C/C++ v10.0 32 bit Runtime DLL files. -->
     107                        <File Id="file_msvcr100.dll_x86" Name="msvcr100.dll"
     108                              Source="$(env.PATH_OUT)\bin\x86\msvcr100.dll" />
     109                        <File Id="file_msvcp100.dll_x86" Name="msvcp100.dll"
     110                              Source="$(env.PATH_OUT)\bin\x86\msvcp100.dll" />
    569111<?endif?>
    570112<?if $(env.VBOX_VCC_TOOL_STEM) = "VCC110" ?>
    571113                        <!-- MS C/C++ v11.0 Runtime DLL files. -->
    572                         <File Id="file_msvcr110.dll" Name="msvcr110.dll"
    573                               Source="$(env.PATH_OUT)\bin\msvcr110.dll" />
    574                         <File Id="file_msvcp110.dll" Name="msvcp110.dll"
    575                               Source="$(env.PATH_OUT)\bin\msvcp110.dll" />
    576 <?endif?>
    577 
    578                         <!-- EFI firmware -->
     114                        <File Id="file_msvcr110.dll_x86" Name="msvcr110.dll"
     115                              Source="$(env.PATH_OUT)\bin\x86\msvcr110.dll" />
     116                        <File Id="file_msvcp110.dll_x86" Name="msvcp110.dll"
     117                              Source="$(env.PATH_OUT)\bin\x86\msvcp110.dll" />
     118<?endif?>
     119                    </Component>
     120                </Directory>
     121<?endif?>
     122
     123                <!-- COM components have a separate entry mainly because of the KeyPath attribute (that hints the
     124                     TypeLib element where to take the TLB resource from) may appear only once per Component. -->
     125                <Component Id="cp_MainCOM" Guid="CD4A3C6C-C2D5-428D-90A1-B6DA3D0777D6" Win64="$(var.Property_Win64)">
     126
     127                    <!-- File ID *must not* be changed because of our typelib template generation file! -->
     128                    <File Id="VBoxSVC" Name="VBoxSVC.exe"
     129                          Source="$(env.PATH_OUT)\bin\VBoxSVC.exe">
     130                    </File>
     131
     132                    <!-- We set KeyPath on this file to instruct TypeLib to read the TLB resource from it
     133                         and create appropriate Interface registry entries. Note that the same TLB is present
     134                         in VBoxSVC.exe - it's just a matter of choice which one to use -->
     135                    <!-- File ID *must not* be changed because of our typelib template generation file! -->
     136                    <File Id="VBoxC" Name="VBoxC.dll"
     137                          Source="$(env.PATH_OUT)\bin\VBoxC.dll" KeyPath="yes">
     138                    </File>
     139
     140                    <!-- Include the autogenerated TypeLib block -->
     141                    <?include $(env.PATH_TARGET)\VirtualBox_TypeLib.wxi ?>
     142
     143                </Component>
     144
     145                <!--
     146
     147                <Component Id="cp_StartMenuShortcut" Guid="1C137D24-E599-47BD-98D0-2F62F202A8EA" Win64="$(var.Property_Win64)">
     148                    <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string"
     149                                   Value="installed" KeyPath="yes" />
     150                    <Shortcut Id="ShortcutStartMenuVBox" Directory="ProgramMenuDir"
     151                              Name="VirtualBox" WorkingDirectory="INSTALLDIR" Advertise="no" Target="VirtualBox.exe" />
     152                    <RemoveFolder Id="ShortcutStartMenuVBoxRemove" On="uninstall" />
     153                </Component>-->
     154
     155                <!---->
     156
     157                <Component Id="cp_RegisterExtensions" Guid="FEB8943E-5D60-4E2D-846F-458207019D40" Win64="$(var.Property_Win64)">
     158                    <Condition>VBOX_REGISTERFILEEXTENSIONS</Condition>
     159                    <!-- Register file extensions. Note: Extension Id's *must not* be changed! These specify the actual
     160                         file extension to handle. Also, here would be the place to add more fancy DDE stuff later.
     161                         Important: The IDs in "IconIndex" *must* be matching "Resources\resource.h". -->
     162                    <ProgId Id="progId_VirtualBox.Shell.vbox" Description="VirtualBox Machine Definition" Icon="file_VBoxRes.dll" IconIndex="-201">
     163                        <Extension Id="vbox" ContentType="application/x-virtualbox-vbox">
     164                            <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
     165                        </Extension>
     166                    </ProgId>
     167                    <ProgId Id="progId_VirtualBox.Shell.vbox-extpack" Description="VirtualBox Extension Pack" Icon="file_VBoxRes.dll" IconIndex="-202">
     168                        <Extension Id="vbox-extpack" ContentType="application/x-virtualbox-vbox-extpack">
     169                            <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
     170                        </Extension>
     171                    </ProgId>
     172                    <ProgId Id="progId_VirtualBox.Shell.ovf" Description="Open Virtualization Format" Icon="file_VBoxRes.dll" IconIndex="-301">
     173                        <Extension Id="ovf" ContentType="application/x-virtualbox-ovf">
     174                            <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
     175                        </Extension>
     176                    </ProgId>
     177                    <ProgId Id="progId_VirtualBox.Shell.ova" Description="Open Virtualization Format Archive" Icon="file_VBoxRes.dll" IconIndex="-302">
     178                        <Extension Id="ova" ContentType="application/x-virtualbox-ova">
     179                            <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
     180                        </Extension>
     181                    </ProgId>
     182                    <ProgId Id="progId_VirtualBox.Shell.vdi" Description="Virtual Disk Image" Icon="file_VBoxRes.dll" IconIndex="-303">
     183                        <Extension Id="vdi" ContentType="application/x-virtualbox-vdi" />
     184                    </ProgId>
     185                    <ProgId Id="progId_VirtualBox.Shell.vmdk" Description="Virtual Machine Disk Format" Icon="file_VBoxRes.dll" IconIndex="-304">
     186                        <Extension Id="vmdk" ContentType="application/x-virtualbox-vmdk" />
     187                    </ProgId>
     188                    <ProgId Id="progId_VirtualBox.Shell.vhd" Description="Virtual Hard Disk" Icon="file_VBoxRes.dll" IconIndex="-305">
     189                        <Extension Id="vhd" ContentType="application/x-virtualbox-vhd" />
     190                    </ProgId>
     191                    <ProgId Id="progId_VirtualBox.Shell.hdd" Description="Virtual Hard Disk" Icon="file_VBoxRes.dll" IconIndex="-306">
     192                        <Extension Id="hdd" ContentType="application/x-virtualbox-hdd" />
     193                    </ProgId>
     194                </Component> <!-- RegisterExtensions -->
     195
     196                <!-- All Binaries, DLLs (except COM) and drivers are in one component because they belong together. Additional
     197                     binaries e.g. test tools, utilities etc. should be in another component so they"re clearly separated. -->
     198                <Component Id="cp_MainBinaries" Guid="5C8FE57A-F744-4DE0-AA3F-A563F486AD98" Win64="$(var.Property_Win64)">
     199
     200                    <!-- Set required environment variables. -->
     201                    <Environment Id="env_VBoxInstallDir" Action="set" Name="VBOX_INSTALL_PATH"
     202                                 System="yes" Part="last" Permanent="no" Value="MergeRedirectFolder" />
     203
     204                    <!-- Files -->
     205<?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
     206                    <!-- Include all user manual .CHM files (file is generated by makefile). -->
     207                    <?include $(env.PATH_TARGET)\Files_Main.wxi ?>
     208<?endif ?>
     209                    <!-- Include all license files (file is generated by makefile). -->
     210                    <?include $(env.PATH_TARGET)\Files_License.wxi ?>
     211
     212                    <!-- Frontends -->
     213                    <File Id="file_VBoxManage.exe" Name="VBoxManage.exe"
     214                          Source="$(env.PATH_OUT)\bin\VBoxManage.exe" />
     215                    <File Id="file_VBoxHeadless.exe" Name="VBoxHeadless.exe"
     216                          Source="$(env.PATH_OUT)\bin\VBoxHeadless.exe">
     217                        <!-- Create a simple shortcut for VBoxVRDP, which is not present anymore, pointing to VBoxHeadless.exe -->
     218                   <!--     <Shortcut Id="ShortcutVBoxVRDP" Directory="INSTALLDIR" Name="VBoxVRDP" Show="normal" WorkingDirectory="INSTALLDIR"/> -->
     219                    </File>
     220                    <File Id="file_VBoxBalloonCtrl.exe" Name="VBoxBalloonCtrl.exe"
     221                          Source="$(env.PATH_OUT)\bin\VBoxBalloonCtrl.exe"/>
     222
     223                    <!-- Misc tools -->
     224                    <File Id="file_VBoxNetDHCP.exe" Name="VBoxNetDHCP.exe"
     225                          Source="$(env.PATH_OUT)\bin\VBoxNetDHCP.exe"/>
     226                    <File Id="file_VBoxNetNAT.exe" Name="VBoxNetNAT.exe"
     227                          Source="$(env.PATH_OUT)\bin\VBoxNetNAT.exe"/>
     228<?if $(env.VBOX_WITH_EXTPACK) = "yes" ?>
     229                    <File Id="file_VBoxExtPackHelperApp.exe" Name="VBoxExtPackHelperApp.exe"
     230                          Source="$(env.PATH_OUT)\bin\VBoxExtPackHelperApp.exe"/>
     231<?endif ?>
     232                    <!-- VBox DLL files -->
     233                    <File Id="file_VBoxDD.dll" Name="VBoxDD.dll"
     234                          Source="$(env.PATH_OUT)\bin\VBoxDD.dll" />
     235                    <File Id="file_VBoxDD2.dll" Name="VBoxDD2.dll"
     236                          Source="$(env.PATH_OUT)\bin\VBoxDD2.dll" />
     237                    <File Id="file_VBoxDDU.dll" Name="VBoxDDU.dll"
     238                          Source="$(env.PATH_OUT)\bin\VBoxDDU.dll" />
     239                    <File Id="file_VBoxRT.dll" Name="VBoxRT.dll"
     240                          Source="$(env.PATH_OUT)\bin\VBoxRT.dll" />
     241                    <File Id="file_VBoxREM.dll" Name="VBoxREM.dll"
     242                          Source="$(env.PATH_OUT)\bin\VBoxREM.dll" />
     243<?if $(env.BUILD_TARGET_ARCH) = "x86" ?>
     244                    <File Id="file_VBoxREM32.dll" Name="VBoxREM32.dll"
     245                          Source="$(env.PATH_OUT)\bin\VBoxREM32.dll" />
     246                    <File Id="file_VBoxREM64.dll" Name="VBoxREM64.dll"
     247                          Source="$(env.PATH_OUT)\bin\VBoxREM64.dll" />
     248<?endif ?>
     249                    <File Id="file_VBoxVMM.dll" Name="VBoxVMM.dll"
     250                          Source="$(env.PATH_OUT)\bin\VBoxVMM.dll" />
     251<?if $(env.VBOX_WITH_VRDP) = "yes" ?>
     252                    <File Id="file_VBoxVRDP.dll" Name="VBoxVRDP.dll"
     253                          Source="$(env.PATH_OUT)\bin\VBoxVRDP.dll" />
     254<?endif ?>
     255                    <File Id="file_VBoxSharedFolders.dll" Name="VBoxSharedFolders.dll"
     256                          Source="$(env.PATH_OUT)\bin\VBoxSharedFolders.dll" />
     257                    <File Id="file_VBoxSharedClipboard.dll" Name="VBoxSharedClipboard.dll"
     258                          Source="$(env.PATH_OUT)\bin\VBoxSharedClipboard.dll" />
     259<?if $(env.VBOX_WITH_DRAG_AND_DROP)= "yes" ?>
     260                    <File Id="file_VBoxDragAndDropSvc.dll" Name="VBoxDragAndDropSvc.dll"
     261                          Source="$(env.PATH_OUT)\bin\VBoxDragAndDropSvc.dll" />
     262<?endif ?>
     263<?if $(env.VBOX_WITH_GUEST_PROPS) = "yes" ?>
     264                    <File Id="file_VBoxGuestPropSvc.dll" Name="VBoxGuestPropSvc.dll"
     265                          Source="$(env.PATH_OUT)\bin\VBoxGuestPropSvc.dll" />
     266<?endif ?>
     267<?if $(env.VBOX_WITH_GUEST_CONTROL) = "yes" ?>
     268                    <File Id="file_VBoxGuestControlSvc.dll" Name="VBoxGuestControlSvc.dll"
     269                          Source="$(env.PATH_OUT)\bin\VBoxGuestControlSvc.dll" />
     270<?endif ?>
     271                    <File Id="file_VBoxHostChannel.dll" Name="VBoxHostChannel.dll"
     272                          Source="$(env.PATH_OUT)\bin\VBoxHostChannel.dll" />
     273                    <File Id="file_VBoxAuth.dll" Name="VBoxAuth.dll"
     274                          Source="$(env.PATH_OUT)\bin\VBoxAuth.dll" />
     275                    <File Id="file_VBoxAuthSimple.dll" Name="VBoxAuthSimple.dll"
     276                          Source="$(env.PATH_OUT)\bin\VBoxAuthSimple.dll" />
     277
     278                    <!-- Include resource DLL (icons, ...). -->
     279                    <File Id="file_VBoxRes.dll" Name="VBoxRes.dll" DiskId="$(var.Property_DiskIdCommon)"
     280                          Source="$(env.PATH_OUT)\bin\VBoxRes.dll" />
     281
     282                    <File Id="file_VMMGC.gc" Name="VMMGC.gc"
     283                          Source="$(env.PATH_OUT)\bin\VMMGC.gc" />
     284                    <File Id="file_VBoxDDGC.gc" Name="VBoxDDGC.gc"
     285                          Source="$(env.PATH_OUT)\bin\VBoxDDGC.gc" />
     286                    <File Id="file_VBoxDD2GC.gc" Name="VBoxDD2GC.gc"
     287                          Source="$(env.PATH_OUT)\bin\VBoxDD2GC.gc" />
     288
     289                    <File Id="file_VMMR0.r0" Name="VMMR0.r0"
     290                          Source="$(env.PATH_OUT)\bin\VMMR0.r0" />
     291                    <File Id="file_VBoxDDR0.r0" Name="VBoxDDR0.r0"
     292                          Source="$(env.PATH_OUT)\bin\VBoxDDR0.r0" />
     293                    <File Id="file_VBoxDD2R0.r0" Name="VBoxDD2R0.r0"
     294                          Source="$(env.PATH_OUT)\bin\VBoxDD2R0.r0" />
     295
     296<?if $(env.VBOX_WITH_CROGL) = "yes" ?>
     297                    <File Id="file_VBoxTestOGL.exe" Name="VBoxTestOGL.exe"
     298                          Source="$(env.PATH_OUT)\bin\VBoxTestOGL.exe" />
     299<?endif ?>
     300                    <!-- Qt frontend -->
     301                    <File Id="file_VirtualBox.exe" Name="VirtualBox.exe"
     302                          Source="$(env.PATH_OUT)\bin\VirtualBox.exe">
     303                    </File>
     304                    <File Id="file_QtCoreVBox4.dll" Name="QtCoreVBox4.dll"
     305                          Source="$(env.PATH_OUT)\bin\QtCoreVBox4.dll" />
     306                    <File Id="file_QtGuiVBox4.dll" Name="QtGuiVBox4.dll"
     307                          Source="$(env.PATH_OUT)\bin\QtGuiVBox4.dll" />
     308                    <File Id="file_QtNetworkVBox4.dll" Name="QtNetworkVBox4.dll"
     309                          Source="$(env.PATH_OUT)\bin\QtNetworkVBox4.dll" />
     310<?if $(env.VBOX_WITH_DEBUGGER_GUI) = "yes" ?>
     311                    <File Id="file_VBoxDbg.dll" Name="VBoxDbg.dll"
     312                          Source="$(env.PATH_OUT)\bin\VBoxDbg.dll" />
     313<?endif ?>
     314<?if $(env.VBOX_GUI_USE_QGL) = "yes" ?>
     315                    <File Id="file_QtOpenGLVBox4.dll" Name="QtOpenGLVBox4.dll"
     316                          Source="$(env.PATH_OUT)\bin\QtOpenGLVBox4.dll" />
     317<?endif?>
     318
     319<?if $(env.VBOX_VCC_TOOL_STEM) = "VCC100" ?>
     320                    <!-- MS C/C++ v10.0 Runtime DLL files. -->
     321                    <File Id="file_msvcr100.dll" Name="msvcr100.dll"
     322                          Source="$(env.PATH_OUT)\bin\msvcr100.dll" />
     323                    <File Id="file_msvcp100.dll" Name="msvcp100.dll"
     324                          Source="$(env.PATH_OUT)\bin\msvcp100.dll" />
     325<?endif?>
     326<?if $(env.VBOX_VCC_TOOL_STEM) = "VCC110" ?>
     327                    <!-- MS C/C++ v11.0 Runtime DLL files. -->
     328                    <File Id="file_msvcr110.dll" Name="msvcr110.dll"
     329                          Source="$(env.PATH_OUT)\bin\msvcr110.dll" />
     330                    <File Id="file_msvcp110.dll" Name="msvcp110.dll"
     331                          Source="$(env.PATH_OUT)\bin\msvcp110.dll" />
     332<?endif?>
     333
     334                    <!-- EFI firmware -->
    579335<?if $(env.VBOX_WITH_EFIFW_PACKING) = "yes" ?>
    580                         <File Id="file_VBoxEFI32.fd" Name="VBoxEFI32.fd" DiskId="$(var.Property_DiskIdCommon)"
    581                               Source="$(env.PATH_OUT)\bin\VBoxEFI32.fd" />
    582                         <File Id="file_VBoxEFI64.fd" Name="VBoxEFI64.fd" DiskId="$(var.Property_DiskIdCommon)"
    583                               Source="$(env.PATH_OUT)\bin\VBoxEFI64.fd" />
    584 <?endif?>
    585                         <!-- VBox guest additions -->
     336                    <File Id="file_VBoxEFI32.fd" Name="VBoxEFI32.fd" DiskId="$(var.Property_DiskIdCommon)"
     337                          Source="$(env.PATH_OUT)\bin\VBoxEFI32.fd" />
     338                    <File Id="file_VBoxEFI64.fd" Name="VBoxEFI64.fd" DiskId="$(var.Property_DiskIdCommon)"
     339                          Source="$(env.PATH_OUT)\bin\VBoxEFI64.fd" />
     340<?endif?>
     341                    <!-- VBox guest additions -->
    586342<?if $(env.VBOX_WITH_ADDITIONS_PACKING) = "yes" ?>
    587     <?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
    588                         <File Id="file_VBoxGuestAdditions.iso" Name="VBoxGuestAdditions.iso" DiskId="$(var.Property_DiskIdCommon)"
    589                               Source="$(env.PATH_MULTIARCH_GUEST_ADDITIONS_ISO)\VBoxGuestAdditions.iso" />
    590     <?else ?>
    591                         <File Id="file_VBoxGuestAdditions.iso" Name="VBoxGuestAdditions.iso"
    592                               Source="$(env.PATH_OUT)\bin\additions\VBoxGuestAdditions.iso" />
    593     <?endif ?>
    594 <?endif ?>
    595                         <!-- Include key for VBox version -->
    596                         <?include $(env.PATH_TARGET)\VBoxKey.wxi ?>
    597 
    598                     </Component> <!-- MainBinaries -->
     343<?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
     344                    <File Id="file_VBoxGuestAdditions.iso" Name="VBoxGuestAdditions.iso" DiskId="$(var.Property_DiskIdCommon)"
     345                          Source="$(env.PATH_MULTIARCH_GUEST_ADDITIONS_ISO)\VBoxGuestAdditions.iso" />
     346<?else ?>
     347                    <File Id="file_VBoxGuestAdditions.iso" Name="VBoxGuestAdditions.iso"
     348                          Source="$(env.PATH_OUT)\bin\additions\VBoxGuestAdditions.iso" />
     349<?endif ?>
     350<?endif ?>
     351                    <!-- Include key for VBox version -->
     352                    <?include $(env.PATH_TARGET)\VBoxKey.wxi ?>
     353
     354                </Component> <!-- MainBinaries -->
    599355
    600356<?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
    601                     <!-- Qt accessible plugins -->
    602                     <Directory Id="dir_Accessible" Name="accessible">
    603                         <Component Id="cp_QtAccessible" Guid="12040EF9-D4A8-4FB2-A69C-CA2F5C354A45" Win64="$(var.Property_Win64)">
    604                             <File Id="file_qtaccessiblewidgets4.dll" Name="qtaccessiblewidgets4.dll"
    605                                   Source="$(env.PATH_OUT)\bin\accessible\qtaccessiblewidgets4.dll" />
    606                         </Component>
    607                     </Directory>
    608 <?endif?>
     357                <!-- Qt accessible plugins -->
     358                <Directory Id="dir_Accessible" Name="accessible">
     359                    <Component Id="cp_QtAccessible" Guid="12040EF9-D4A8-4FB2-A69C-CA2F5C354A45" Win64="$(var.Property_Win64)">
     360                        <File Id="file_qtaccessiblewidgets4.dll" Name="qtaccessiblewidgets4.dll"
     361                              Source="$(env.PATH_OUT)\bin\accessible\qtaccessiblewidgets4.dll" />
     362                    </Component>
     363                </Directory>
     364<?endif?>
     365
     366<?if $(env.VBOX_WITH_CROGL) = "yes" ?>
     367                <Component Id="cp_VBoxCROpenGL" Guid="874A1297-835A-491D-8A9D-7E723BC29EE7" Win64="$(var.Property_Win64)">
     368                    <File Id="file_VBoxOGLhostcrutil.dll" Name="VBoxOGLhostcrutil.dll"
     369                          Source="$(env.PATH_OUT)\bin\VBoxOGLhostcrutil.dll" />
     370                    <File Id="file_VBoxOGLhosterrorspu.dll" Name="VBoxOGLhosterrorspu.dll"
     371                          Source="$(env.PATH_OUT)\bin\VBoxOGLhosterrorspu.dll" />
     372                    <File Id="file_VBoxOGLrenderspu.dll" Name="VBoxOGLrenderspu.dll"
     373                          Source="$(env.PATH_OUT)\bin\VBoxOGLrenderspu.dll" />
     374                    <File Id="file_VBoxSharedCrOpenGL.dll" Name="VBoxSharedCrOpenGL.dll"
     375                          Source="$(env.PATH_OUT)\bin\VBoxSharedCrOpenGL.dll" />
     376                </Component>
     377<?endif?>
     378                <!-- SDL plugins -->
     379                <Component Id="cp_VBoxSDLBinaries" Guid="F09D5FD9-E176-42B0-90A9-481BB18B0CB4" Win64="$(var.Property_Win64)">
     380                    <File Id="file_VBoxSDL.exe" Name="VBoxSDL.exe"
     381                          Source="$(env.PATH_OUT)\bin\VBoxSDL.exe" />
     382                    <File Id="file_SDL.dll" Name="SDL.dll"
     383                          Source="$(env.PATH_OUT)\bin\SDL.dll" />
     384<?if $(env.VBOX_WITH_SECURELABEL) = "yes" ?>
     385                    <File Id="file_SDL_ttf.dll" Name="SDL_ttf.dll"
     386                          Source="$(env.PATH_OUT)\bin\SDL_ttf.dll" />
     387<?endif?>
     388                </Component> <!-- SDL plugins -->
     389
     390<?if $(env.VBOX_WITH_WEBSERVICES) = "yes" ?>
     391                <!-- Webservice -->
     392                <Component Id="cp_VBoxWebService" Guid="DD404F04-9874-43E9-AEE2-7762924D922E">
     393                    <File Id="file_VBoxWebSrv.exe" Name="VBoxWebSrv.exe"
     394                          Source="$(env.PATH_OUT)\bin\vboxwebsrv.exe" />
     395                </Component>
     396<?endif?>
     397                <!-- C API (glue) bindings -->
     398                <Component Id="cp_VBoxCAPI" Guid="097F7F53-7111-467F-8E0C-257D9926FDA0">
     399                    <File Id="file_VBoxCAPI.dll" Name="VBoxCAPI.dll"
     400                          Source="$(env.PATH_OUT)\bin\VBoxCAPI.dll" />
     401                </Component>
    609402
    610403<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
    611                     <!-- Python bindings -->
    612                     <Directory Id="dir_SDK" Name="sdk">
    613                         <Directory Id="dir_SDKInstall" Name="install">
    614                             <Component Id="cp_VBoxPyInst" Guid="C9A40306-5102-11DE-A7BA-C3C555D89593" Win64="$(var.Property_Win64)">
    615                                  <File Id="file_vboxapisetup.py" Name="vboxapisetup.py" DiskId="$(var.Property_DiskIdCommon)"
    616                                        Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapisetup.py" />
    617                             </Component>
    618                             <Directory Id="dir_SDKVBoxAPI" Name="vboxapi">
    619                                 <Component Id="cp_VBoxPyMod" Guid="DF19CB76-5102-11DE-943B-13C755D89593" Win64="$(var.Property_Win64)">
    620                                     <File Id="file___init__.py" Name="__init__.py" DiskId="$(var.Property_DiskIdCommon)"
    621                                           Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapi\__init__.py" />
    622                                     <File Id="file_VirtualBox_constants.py" Name="VirtualBox_constants.py" DiskId="$(var.Property_DiskIdCommon)"
    623                                           Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapi\VirtualBox_constants.py" />
    624                                 </Component>
    625                             </Directory>
    626                         </Directory>
    627                     </Directory>
    628 <?endif?>
    629 
    630 <?if $(env.VBOX_WITH_CROGL) = "yes" ?>
    631                     <Component Id="cp_VBoxCROpenGL" Guid="874A1297-835A-491D-8A9D-7E723BC29EE7" Win64="$(var.Property_Win64)">
    632                         <File Id="file_VBoxOGLhostcrutil.dll" Name="VBoxOGLhostcrutil.dll"
    633                               Source="$(env.PATH_OUT)\bin\VBoxOGLhostcrutil.dll" />
    634                         <File Id="file_VBoxOGLhosterrorspu.dll" Name="VBoxOGLhosterrorspu.dll"
    635                               Source="$(env.PATH_OUT)\bin\VBoxOGLhosterrorspu.dll" />
    636                         <File Id="file_VBoxOGLrenderspu.dll" Name="VBoxOGLrenderspu.dll"
    637                               Source="$(env.PATH_OUT)\bin\VBoxOGLrenderspu.dll" />
    638                         <File Id="file_VBoxSharedCrOpenGL.dll" Name="VBoxSharedCrOpenGL.dll"
    639                               Source="$(env.PATH_OUT)\bin\VBoxSharedCrOpenGL.dll" />
    640                     </Component>
    641 <?endif?>
    642                     <!-- SDL plugins -->
    643                     <Component Id="cp_VBoxSDLBinaries" Guid="F09D5FD9-E176-42B0-90A9-481BB18B0CB4" Win64="$(var.Property_Win64)">
    644                         <File Id="file_VBoxSDL.exe" Name="VBoxSDL.exe"
    645                               Source="$(env.PATH_OUT)\bin\VBoxSDL.exe" />
    646                         <File Id="file_SDL.dll" Name="SDL.dll"
    647                               Source="$(env.PATH_OUT)\bin\SDL.dll" />
    648 <?if $(env.VBOX_WITH_SECURELABEL) = "yes" ?>
    649                         <File Id="file_SDL_ttf.dll" Name="SDL_ttf.dll"
    650                               Source="$(env.PATH_OUT)\bin\SDL_ttf.dll" />
    651 <?endif?>
    652                     </Component> <!-- SDL plugins -->
    653 
    654 <?if $(env.VBOX_WITH_WEBSERVICES) = "yes" ?>
    655                     <!-- Webservice -->
    656                     <Component Id="cp_VBoxWebService" Guid="DD404F04-9874-43E9-AEE2-7762924D922E">
    657                         <File Id="file_VBoxWebSrv.exe" Name="VBoxWebSrv.exe"
    658                               Source="$(env.PATH_OUT)\bin\vboxwebsrv.exe" />
    659                     </Component>
    660 <?endif?>
    661 
    662                     <!-- C API (glue) binding -->
    663                     <Component Id="cp_VBoxCAPI" Guid="097F7F53-7111-467F-8E0C-257D9926FDA0">
    664                         <File Id="file_VBoxCAPI.dll" Name="VBoxCAPI.dll"
    665                               Source="$(env.PATH_OUT)\bin\VBoxCAPI.dll" />
    666                     </Component>
    667 
    668 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
    669                     <Component Id="cp_VBoxPythonBinding" Guid="293D7E11-78DA-4C31-AEED-AE2FE42F6881">
    670                         <Condition>PYTHON_INSTALLED</Condition>
    671                     </Component>
    672 <?endif?>
    673                 </Directory> <!-- Installation directory -->
    674             </Directory> <!-- Windows program files directory -->
    675 
    676             <!-- Set up special directory IDs for referencing to the start menu
    677                  or the Quick Launch bar.
    678                  See: http://msdn.microsoft.com/en-us/library/aa368276.aspx
    679                       http://wix.mindcapers.com/wiki/Shortcuts_in_WiX -->
    680             <Directory Id="ProgramMenuFolder">
    681                 <Directory Id="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)"/>
    682             </Directory>
    683 
    684             <Directory Id="DesktopFolder" Name="Desktop"/>
    685 
    686             <Directory Id="AppDataFolder" Name="AppData">
    687                 <Directory Id="dir_AppDataMicrosoft" Name="Microsoft">
    688                     <Directory Id="dir_AppDataMSIE" Name="Internet Explorer">
    689                         <Directory Id="dir_QuicklaunchFolder" Name="Quick Launch"/>
    690                     </Directory>
    691                 </Directory>
    692             </Directory>
    693 
    694             <!-- Shortcut(s) in start menu -->
    695             <Component Id="cp_StartMenuVBox" Guid="C2DC321A-CE63-40EE-8A98-724DF8BD12FB" Win64="$(var.Property_Win64)">
    696                 <Shortcut Id="sc_StartMenuVBox" Directory="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
    697                           Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
    698                 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)"
    699                                Type="string" Value="installed" KeyPath="yes" />
    700                 <?include $(env.PATH_TARGET)\Shortcuts_StartMenu.wxi ?>
    701             </Component>
    702 
    703             <Component Id="cp_DesktopShortcut" Guid="668F8A1A-F5CE-48B3-BB1A-3042EE27B279" Win64="$(var.Property_Win64)">
    704                 <Condition>INSTALLDESKTOPSHORTCUT</Condition>
    705                 <Shortcut Id="sc_DesktopVBox" Directory="DesktopFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
    706                           Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
    707                 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string"
    708                                Value="installed" KeyPath="yes" />
    709             </Component>
    710 
    711             <Component Id="cp_QuickLaunchVBox" Guid="CC19E026-938A-41CB-8E77-3F33296244B6" Win64="$(var.Property_Win64)">
    712                 <CreateFolder/>
    713                 <Condition>INSTALLQUICKLAUNCHSHORTCUT</Condition>
    714                 <Shortcut Id="sc_QuickLaunchVBox" Directory="dir_QuicklaunchFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
    715                           Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
    716                 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)"
    717                                Type="string" Value="installed" KeyPath="yes" />
    718             </Component>
     404                <Component Id="cp_VBoxPythonBinding" Guid="293D7E11-78DA-4C31-AEED-AE2FE42F6881">
     405                    <Condition>VBOX_PYTHON_IS_INSTALLED</Condition>
     406                </Component>
     407<?endif?>
     408            </Directory> <!-- MergeRedirectFolder directory -->
    719409        </Directory> <!-- TARGETDIR -->
    720410
    721         <!-- Note: Feature IDs *must not* be renamed to use any prefixes or such,
    722                    otherwise this will break manual selection using the ADDLOCAL= syntax
    723                    when using the command line / scripts (see VBox manual). -->
    724         <Feature Id="VBoxApplication" Title="VirtualBox Application" Level="1"
    725                  Description="!(loc.VB_App)"
    726                  ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    727                  Absent="disallow" AllowAdvertise="no" >
    728 
    729             <ComponentRef Id="cp_StartMenuVBox" />
    730             <ComponentRef Id="cp_DesktopShortcut" />
    731             <ComponentRef Id="cp_QuickLaunchVBox" />
    732             <ComponentRef Id="cp_RegisterExtensions" />
    733 
    734 <?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
    735             <ComponentRef Id="cp_Docs" />
    736 <?endif?>
    737             <ComponentRef Id="cp_NLS" />
    738 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
    739             <ComponentRef Id="cp_MainCOM_x86" />
    740 <?endif?>
    741             <ComponentRef Id="cp_MainCOM" />
    742             <ComponentRef Id="cp_MainBinaries" />
    743 <?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
    744             <ComponentRef Id="cp_QtAccessible" />
    745 <?endif?>
    746 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
    747             <ComponentRef Id="cp_VBoxPyInst" />
    748             <ComponentRef Id="cp_VBoxPyMod" />
    749 <?endif?>
    750 
    751 <?if $(env.VBOX_WITH_CROGL) = "yes" ?>
    752             <ComponentRef Id="cp_VBoxCROpenGL" />
    753 <?endif?>
    754             <ComponentRef Id="cp_VBoxSDLBinaries" />
    755 <?if $(env.VBOX_WITH_WEBSERVICES) = "yes" ?>
    756             <ComponentRef Id="cp_VBoxWebService" />
    757 <?endif?>
    758             <ComponentRef Id="cp_VBoxCAPI" />
    759             <ComponentRef Id="cp_VBoxDrv" />
    760 
    761             <Feature Id="VBoxUSB" Title="VirtualBox USB Support" Level="1"
    762                      Description="!(loc.VB_USBDriver)"
    763                      ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    764                      Absent="allow" AllowAdvertise="no" >
    765                 <ComponentRef Id="cp_USBFilterDriver" />
    766                 <ComponentRef Id="cp_USBDeviceDriver" />
    767             </Feature>
    768 
    769 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
    770             <Feature Id="VBoxNetwork" Title="VirtualBox Networking" Level="1"
    771                      Description="!(loc.VB_Network)"
    772                      ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    773                      Absent="allow" AllowAdvertise="no" >
    774                 <Feature Id="VBoxNetworkFlt" Title="VirtualBox Bridged Networking" Level="1"
    775                          Description="!(loc.VB_NetFltDriver)"
    776                          ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    777                          Absent="allow" AllowAdvertise="no" >
    778                     <ComponentRef Id="cp_NetFltDriver" />
    779                 </Feature>
    780                 <Feature Id="VBoxNetworkAdp" Title="VirtualBox Host-Only Networking" Level="1"
    781                          Description="!(loc.VB_NetAdpDriver)"
    782                          ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    783                          Absent="allow" AllowAdvertise="no" >
    784                     <ComponentRef Id="cp_NetAdpDriver" />
    785                 </Feature>
    786             </Feature>
    787 <?endif?>
    788 
    789 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
    790             <Feature Id="VBoxPython" Title="VirtualBox Python 2.x Support" Level="1"
    791                     Description="!(loc.VB_Python)"
    792                     ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    793                     Absent="allow" AllowAdvertise="no" >
    794                 <ComponentRef Id="cp_VBoxPythonBinding" />
    795             </Feature>
    796 <?endif?>
    797 
    798         </Feature>
    799 
    800         <!-- Include user interface definition. -->
    801         <?include UserInterface.wxi ?>
    802 
    803         <InstallExecuteSequence>
    804 
    805             <!--
    806                 To debug the action sequences, do: "msiexec /i <VBox.msi> /lar <Logfile>"
    807 
    808                 InstallUISequence (client side) is:
    809                     AppSearch
    810                     LaunchConditions
    811                     ValidateProductID
    812                     CostInitialize
    813                     FileCost
    814                     CostFinalize
    815                     ExecuteAction -> will pass control over to "InstallExecuteSequence"
    816 
    817                 The first six actions above will be repeated but skipped on the server
    818                 side if already run on the client side.
    819 
    820                 InstallExecuteSequence (server side) is:
    821                     <First six action from InstallUISequence>
    822                     .
    823                     InstallInitialize
    824                     .
    825                     InstallFinalize
    826 
    827                 The actions between InstallInitialize and InstallFinalize will be gone through twice:
    828                 - The first time the installer creates an installation script containing all actions in the right
    829                   sequence which need to get executed in a batch later. At this point the launch conditions for
    830                   custom actions must be met already!
    831                 - The second time the generated installation script will be run as-is.
    832 
    833                 Also, the InstallUISequence and InstallExecuteSequence tables run in different sessions which
    834                 need public properties (that is, UPPERCASE properties).
    835             -->
    836 
    837             <!-- AppSearch must be done before "RemoveExistingProducts" and before "FindRelatedProducts". -->
    838             <AppSearch Sequence="1"></AppSearch>
    839             <LaunchConditions After="AppSearch" />
    840 
    841             <!-- First install the new version and then remove the old version. This is more efficient. -->
    842             <RemoveExistingProducts Before="InstallValidate" />
    843 
    844             <Custom Action="ca_OriginalTargetDir" After="FileCost"><![CDATA[(NOT INSTALLDIR) AND (NOT EXISTINGINSTALLDIR)]]></Custom>
    845             <Custom Action="ca_DefaultTargetDir" Before="FileCost" ><![CDATA[NOT Installed AND (NOT INSTALLDIR) AND EXISTINGINSTALLDIR]]></Custom>
    846 
    847             <Custom Action="ca_UninstallTAPInstances" Before="InstallFiles" >1</Custom>
    848 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
    849             <!-- Create host-only interfaces on first-time install. -->
    850             <Custom Action="ca_CreateHostOnlyInterfaceArgs" Before="ca_CreateHostOnlyInterface" ><![CDATA[&VBoxNetworkAdp=3]]></Custom>
    851             <Custom Action="ca_CreateHostOnlyInterface" Before="InstallFinalize" ><![CDATA[&VBoxNetworkAdp=3]]></Custom>
    852             <!-- Don't remove the host-only interfaces on update, only on uninstall. -->
    853             <Custom Action="ca_RemoveHostOnlyInterfaces" After="ca_UninstallNetFlt" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
    854             <!-- First stop the existing host-only interfaces on update ... -->
    855             <Custom Action="ca_StopHostOnlyInterfaces" Before="ca_UpdateHostOnlyInterfaces" ><![CDATA[UPGRADINGPRODUCTCODE]]></Custom>
    856             <!-- ... then do the actual driver update. -->
    857             <Custom Action="ca_UpdateHostOnlyInterfacesArgs" Before="ca_UpdateHostOnlyInterfaces" ><![CDATA[Installed AND UPGRADINGPRODUCTCODE]]></Custom>
    858             <Custom Action="ca_UpdateHostOnlyInterfaces" Before="InstallFiles" ><![CDATA[Installed AND UPGRADINGPRODUCTCODE]]></Custom>
    859 
    860             <Custom Action="ca_RollbackInstallNetFltArgs" Before="ca_RollbackInstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
    861             <Custom Action="ca_RollbackInstallNetFlt" Before="ca_InstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
    862             <Custom Action="ca_InstallNetFltArgs" Before="ca_InstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
    863             <Custom Action="ca_InstallNetFlt" Before="ca_CreateHostOnlyInterface" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
    864 
    865             <Custom Action="ca_RollbackUninstallNetFltArgs" Before="ca_RollbackUninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
    866             <Custom Action="ca_RollbackUninstallNetFlt" Before="ca_UninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
    867             <Custom Action="ca_UninstallNetFltArgs" Before="ca_UninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
    868             <Custom Action="ca_UninstallNetFlt" After="InstallInitialize" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
    869 <?endif?>
    870             <Custom Action="ca_InstallPythonAPIArgs" Before="ca_InstallPythonAPI" ><![CDATA[&VBoxPython=3]]></Custom>
    871             <Custom Action="ca_InstallPythonAPI" Before="InstallFinalize" ><![CDATA[&VBoxPython=3]]></Custom>
    872 
    873             <Custom Action="ca_InstallBrandingArgs" Before="ca_InstallBranding" ><![CDATA[NOT REMOVE]]></Custom>
    874             <Custom Action="ca_InstallBranding" Before="InstallFinalize" ><![CDATA[NOT REMOVE]]></Custom>
    875 
    876             <!-- Uninstall branding on complete uninstall, not on update. -->
    877             <Custom Action="ca_UninstallBrandingArgs" Before="ca_UninstallBranding" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
    878             <Custom Action="ca_UninstallBranding" Before="InstallFinalize" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
    879 
    880         </InstallExecuteSequence>
    881 
    882     </Product>
     411    </Module>
    883412</Wix>
    884 
  • trunk/src/VBox/Installer/win/VirtualBox.wxs

    r50289 r51009  
    1 <?xml version="1.0"?>
     1<?xml version='1.0' encoding='windows-1252'?>
    22<!--
    33    VirtualBox Windows Installation Script (WiX)
    44
    5     Copyright (C) 2006-2013 Oracle Corporation
     5    Copyright (C) 2014 Oracle Corporation
    66
    77    This file is part of VirtualBox Open Source Edition (OSE), as
     
    1414-->
    1515
    16 <?define Property_RegKey = "Software\$(env.VBOX_VENDOR_SHORT)\VirtualBox" ?>
    17 <?define Property_RegKeyInstall = "Software\$(env.VBOX_VENDOR_SHORT)\VirtualBox\Install" ?>
    18 <?define Property_Version = "$(env.VBOX_VERSION_STRING_RAW)" ?>
    19 <?define Property_VersionExt = "$(env.VBOX_VERSION_STRING)" ?>
    20 <?define Property_Upgrade = "yes" ?>
    21 
    22 <?if $(env.BUILD_TARGET_ARCH) = "amd64" ?>
    23     <?define Property_ProgramFiles = "ProgramFiles64Folder" ?>
    24     <?define Property_Platform     = "x64" ?>
    25     <?define Property_Win64        = "yes" ?>
    26 
    27 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    28     <?define Property_DriverLegacy = "no" ?>
    29 <?else ?>
    30     <?define Property_DriverLegacy = "yes" ?>
    31 <?endif ?>
    32 
    33 <?else ?>
    34     <?define Property_ProgramFiles = "ProgramFilesFolder" ?>
    35     <?define Property_Platform     = "x86" ?>
    36     <?define Property_Win64        = "no" ?>
    37 
    38 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    39    <!-- Note: Settings this to 'no' breaks win2k installs (!) -->
    40     <?define Property_DriverLegacy = "yes" ?>
    41 <?else ?>
    42     <?define Property_DriverLegacy = "yes" ?>
    43 <?endif ?>
    44 
    45 <?endif ?>
    46 
    47 <!-- If we build a combined installer (32- and 64-bit in one installer), we
    48      use two installer "disks": One for all platform-specific stuff and one which
    49      contains all common (platform independent) stuff (like manuals, bitmaps etc). -->
    50 <?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
    51     <?define Property_DiskIdCommon = "2" ?>
    52 <?else ?>
    53     <?define Property_DiskIdCommon = "1" ?>
    54 <?endif ?>
    55 
    5616<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
    5717     xmlns:difxapp="http://schemas.microsoft.com/wix/DifxAppExtension">
    5818
    59     <!-- Note: GUIDs in WiX *must* be uppercase! -->
    60     <!-- Always include an upgrade ID or otherwise upgrade installation will not be possible. When doing
    61          a major upgrade (more than just fixing a few files) change the product GUID. We always do a major
    62          upgrade even for minor VBox updates. For that only change the product ID and the product version.
    63          The upgrade code *never* must be changed! -->
    64 
    65     <!-- Update / Upgrade policies:
    66          Update Type    Package Code    Product Version     Product Code    Upgrade Code
    67          Small update   change          don't change        don't change    don't change
    68          Minor update   change          change              don't change    don't change
    69          Major upgrade  change          change              change          don't change -->
    70 
    71     <!-- Old product ID: <Product Id="B59FE77B-738F-4f1c-AB48-3104895AF676"
    72          Old upgrade code of innotek: UpgradeCode="F5FFAEBF-97AE-4038-8F91-4DE719456127" -->
     19    <?include Properties.wxi ?>
     20
     21    <!-- The merge module file names -->
     22    <?define Property_VBoxMergeApp = "$(env.VBOX_WIN_INST_MERGE_APP)" ?>
     23    <?define Property_VBoxMergeUSB = "$(env.VBOX_WIN_INST_MERGE_USB)" ?>
     24<?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
     25    <?define Property_VBoxMergeNetworkFlt = "$(env.VBOX_WIN_INST_MERGE_NETFLT)" ?>
     26<?endif ?>
     27    <?define Property_VBoxMergeNetworkAdp = "$(env.VBOX_WIN_INST_MERGE_NETADP)" ?>
     28<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
     29    <?define Property_VBoxMergePython = "$(env.VBOX_WIN_INST_MERGE_PYTHON)" ?>
     30<?endif ?>
    7331
    7432    <Product Id="*"
     
    8038             Manufacturer="$(env.VBOX_VENDOR)">
    8139
    82         <Package Id="*" Keywords="Installer"
    83                  Description="$(env.VBOX_PRODUCT) $(var.Property_VersionExt) installation package"
    84                  Comments="$(env.VBOX_PRODUCT) installation package"
    85                  Manufacturer="$(env.VBOX_VENDOR)"
    86                  InstallerVersion="200"
    87                  Compressed="yes"
    88                  InstallPrivileges="elevated"
    89                  Platform="$(var.Property_Platform)"/>
    90 
    91         <!-- *************************** Upgrade packages only ******************************* -->
    92         <!-- Minimum and Maximum specify the range of versions we are supposed to update with this upgrade.
    93              IncludeMaximum and IncludeMinimum specify whether the bound value is actually included in the range or not
    94              (IncludeMaximum = yes meaning to find versions below or equal to the version specified in Maximum while
    95              IncludeMaximum = no only finds those below the Maximum).
    96              OnlyDetect tells the installer not to remove the previous product. This is useful as long as we
    97              only change files in the package. -->
    98 
    99         <Upgrade Id="C4BAD770-BFE8-4D2C-A592-693028A7215B"> <!-- Upgrade of Sun xVM VirtualBox >= v1.6.0 -->
    100 
    101             <!-- Upgrade is flagged if current-install is newer than or equal to package - TODO: should make a dialog appear asking user to confirm downgrade.  -->
    102             <!--- Setting "OnlyDetect" to "no" makes the installer uninstall an already newer installed version. -->
    103             <UpgradeVersion Property="NEWERVERSIONDETECTED" Minimum="$(var.Property_Version)" OnlyDetect="no" />
    104 
    105             <!-- Flag is set if the install will trigger an upgrade of an existing install -->
    106             <UpgradeVersion Property="PREVIOUSVERSIONSINSTALLED" Minimum="1.0.0.0" Maximum="$(var.Property_Version)" IncludeMaximum="yes" />
    107 
    108         </Upgrade>
    109 
    110         <!-- The product's icon table. -->
    111         <Icon Id="IconVirtualBox" SourceFile="$(env.VBOX_WINDOWS_ICON_FILE)" />
    112 
    113         <!-- Global properties. -->
    114         <Property Id="ARPPRODUCTICON">IconVirtualBox</Property>
    115         <Property Id="ARPURLINFOABOUT">http://www.virtualbox.org</Property>
    116         <Property Id="ARPURLUPDATEINFO">http://www.virtualbox.org</Property>
    117         <Property Id="INSTALLDESKTOPSHORTCUT" Value="1"></Property>
    118         <Property Id="INSTALLQUICKLAUNCHSHORTCUT" Value="1"></Property>
    119         <Property Id="REGISTERFILEEXTENSIONS" Value="1"></Property>
    120         <Property Id="STARTVBOX" Value="1"></Property>
    121 
    122         <!-- Install the product for all users on the system -->
    123         <Property Id="ALLUSERS"><![CDATA[1]]></Property>
    124 
    125         <!-- Make sure installation will not start on anything other but the NT family -->
     40    <Package Id="*"
     41             Keywords="Installer"
     42             Description="$(env.VBOX_PRODUCT) $(var.Property_VersionExt) installation package"
     43             Comments="$(env.VBOX_PRODUCT) installation package"
     44             Compressed="yes"
     45             Manufacturer="$(env.VBOX_VENDOR)"
     46             InstallerVersion="200"
     47             InstallPrivileges="elevated"
     48             Platform="$(var.Property_Platform)"/>
     49
     50    <!-- Global properties -->
     51    <Property Id="ARPPRODUCTICON">IconVirtualBox</Property>
     52    <Property Id="ARPURLINFOABOUT">http://www.virtualbox.org</Property>
     53    <Property Id="ARPURLUPDATEINFO">http://www.virtualbox.org</Property>
     54
     55    <!-- Install the product for all users on the system -->
     56    <Property Id="ALLUSERS"><![CDATA[1]]></Property>
     57
     58    <!-- Force overwriting all files and re-create shortcuts to guarantee a working environment -->
     59    <Property Id='REINSTALLMODE' Value='amus'/>
     60
     61    <!-- VirtualBox properties -->
     62    <Property Id="VBOX_INSTALLDESKTOPSHORTCUT" Value="1"></Property>
     63    <Property Id="VBOX_INSTALLQUICKLAUNCHSHORTCUT" Value="1"></Property>
     64    <Property Id="VBOX_REGISTERFILEEXTENSIONS" Value="1"></Property>
     65    <Property Id="VBOX_STARTVBOX" Value="1"></Property>
     66
     67    <!-- Make sure installation will not start on anything other but the NT family -->
    12668<?if $(env.BUILD_TARGET_ARCH) = "amd64" ?>
    127         <Condition Message="!(loc.Only64Bit)">
    128             VersionNT64
    129         </Condition>
     69    <Condition Message="!(loc.Only64Bit)">
     70        VersionNT64
     71    </Condition>
    13072<?else ?>
    131         <Condition Message="!(loc.Only32Bit)">
    132             NOT VersionNT64
    133         </Condition>
    134 
    135         <Condition Message="!(loc.WrongOS)">
    136             NOT VersionNT=500 AND NOT Version9X AND NOT VersionNT64
    137         </Condition>
    138 
    139 <?endif ?>
    140 
    141         <Condition Message="!(loc.NeedAdmin)">
    142             Privileged
    143         </Condition>
    144 
    145         <!-- Force overwriting all files and re-create shortcuts to guarantee a working environment -->
    146         <Property Id='REINSTALLMODE' Value='amus'/>
    147 
    148         <!-- Custom actions -->
    149 
    150         <!-- Figure out where a previous installation was, if any -->
    151 <?if $(env.BUILD_TARGET_ARCH) = "amd64" ?>
    152         <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFiles64Folder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
    153 
    154         <Property Id="EXISTINGINSTALLDIR" Secure="yes">
    155             <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Win64="$(var.Property_Win64)"/>
    156         </Property>
    157         <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
    158 <?else ?>
    159         <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[ProgramFilesFolder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
    160 
    161         <Property Id="EXISTINGINSTALLDIR" Secure="yes">
    162             <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir" Type="raw" Win64="$(var.Property_Win64)"/>
    163         </Property>
    164         <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
    165 <?endif ?>
    166 
    167         <Binary Id="VBoxInstallHelper" SourceFile="$(env.PATH_OUT)\bin\VBoxInstallHelper.dll" />
    168         <CustomAction Id="ca_CheckSerial" BinaryKey="VBoxInstallHelper" DllEntry="CheckSerial" Impersonate="no"/>
    169 
    170         <CustomAction Id="ca_InstallPythonAPI" BinaryKey="VBoxInstallHelper" DllEntry="InstallPythonAPI" Execute="deferred" Return="check" Impersonate="no"/>
    171         <CustomAction Id="ca_InstallPythonAPIArgs" Property="ca_InstallPythonAPI" Value="[INSTALLDIR]" Execute="immediate"/>
    172 
    173         <CustomAction Id="ca_InstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="InstallBranding" Execute="deferred" Return="check" Impersonate="no"/>
    174         <CustomAction Id="ca_InstallBrandingArgs" Property="ca_InstallBranding" Value="[INSTALLDIR]" Execute="immediate"/>
    175 
    176         <CustomAction Id="ca_UninstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="UninstallBranding" Execute="deferred" Return="check" Impersonate="no"/>
    177         <CustomAction Id="ca_UninstallBrandingArgs" Property="ca_UninstallBranding" Value="[INSTALLDIR]" Execute="immediate"/>
    178 
    179         <CustomAction Id="ca_UninstallTAPInstances" BinaryKey="VBoxInstallHelper"
    180                       DllEntry="UninstallTAPInstances" Execute="deferred" Return="check" Impersonate="no"/>
    181 
    182 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
    183         <CustomAction Id="ca_CreateHostOnlyInterface" BinaryKey="VBoxInstallHelper"  DllEntry="CreateHostOnlyInterface" Execute="deferred" Return="check" Impersonate="no"/>
    184         <CustomAction Id="ca_CreateHostOnlyInterfaceArgs" Property="ca_CreateHostOnlyInterface" Value="[INSTALLDIR]" Execute="immediate"/>
    185 
    186         <CustomAction Id="ca_RemoveHostOnlyInterfaces" BinaryKey="VBoxInstallHelper"  DllEntry="RemoveHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
    187         <CustomAction Id="ca_StopHostOnlyInterfaces" BinaryKey="VBoxInstallHelper"  DllEntry="StopHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
    188 
    189         <CustomAction Id="ca_UpdateHostOnlyInterfaces" BinaryKey="VBoxInstallHelper"  DllEntry="UpdateHostOnlyInterfaces" Execute="deferred" Return="check" Impersonate="no"/>
    190         <CustomAction Id="ca_UpdateHostOnlyInterfacesArgs" Property="ca_UpdateHostOnlyInterfaces" Value="[INSTALLDIR]" Execute="immediate"/>
    191 
    192         <CustomAction Id="ca_InstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="InstallNetFlt" Execute="deferred" Return="check" Impersonate="no"/>
    193         <CustomAction Id="ca_InstallNetFltArgs" Property="ca_InstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
    194 
    195         <CustomAction Id="ca_RollbackInstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="UninstallNetFlt" Execute="rollback" Impersonate="no"/>
    196         <CustomAction Id="ca_RollbackInstallNetFltArgs" Property="ca_RollbackInstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
    197 
    198         <CustomAction Id="ca_UninstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="UninstallNetFlt" Execute="deferred" Return="check" Impersonate="no"/>
    199         <CustomAction Id="ca_UninstallNetFltArgs" Property="ca_UninstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
    200 
    201         <CustomAction Id="ca_RollbackUninstallNetFlt" BinaryKey="VBoxInstallHelper" DllEntry="InstallNetFlt" Execute="rollback" Impersonate="no"/>
    202         <CustomAction Id="ca_RollbackUninstallNetFltArgs" Property="ca_RollbackUninstallNetFlt" Value="[INSTALLDIR]" Execute="immediate"/>
    203 <?endif ?>
    204 
    205         <CustomAction Id="ca_StartVBox" FileKey="file_VirtualBox.exe" ExeCommand="" Return="asyncNoWait" Impersonate="yes" />
    206 
    207         <!-- Detect old Sun installation -->
    208         <!-- Force a manual uninstall of an already installed Sun VirtualBox version first -->
    209         <!--<Property Id="VBOXSUN">
    210             <RegistrySearch Id="RegSearchSunVersion" Root="HKLM" Key="SOFTWARE\Sun\VirtualBox" Name="Version" Type="raw" Win64="$(var.Property_Win64)"/>
    211         </Property>
    212         <Condition Message="!(loc.SunFound)">
    213             NOT VBOXSUN
    214         </Condition>-->
    215 
    216         <!-- Detect old innotek installation -->
    217         <!-- Force a manual uninstall of an already installed innotek VirtualBox version first -->
    218         <Property Id="VBOXINNOTEK">
    219             <RegistrySearch Id="RegSearchInnotekVersion" Root="HKLM" Key="SOFTWARE\Innotek\VirtualBox" Name="Version" Type="raw" Win64="$(var.Property_Win64)"/>
    220         </Property>
    221         <Condition Message="!(loc.InnotekFound)">
    222             NOT VBOXINNOTEK
    223         </Condition>
    224 
    225         <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
     73    <Condition Message="!(loc.Only32Bit)">
     74        NOT VersionNT64
     75    </Condition>
     76
     77    <Condition Message="!(loc.WrongOS)">
     78        NOT VersionNT=500 AND NOT Version9X AND NOT VersionNT64
     79    </Condition>
     80
     81<?endif ?>
     82
     83    <Condition Message="!(loc.NeedAdmin)">
     84        Privileged
     85    </Condition>
     86
     87    <!-- Detect old innotek installation -->
     88    <!-- Force a manual uninstall of an already installed innotek VirtualBox version first -->
     89    <Property Id="VBOXINNOTEK">
     90        <RegistrySearch Id="RegSearchInnotekVersion" Root="HKLM" Key="SOFTWARE\Innotek\VirtualBox" Name="Version" Type="raw" Win64="$(var.Property_Win64)"/>
     91    </Property>
     92    <Condition Message="!(loc.InnotekFound)">
     93        NOT VBOXINNOTEK
     94    </Condition>
     95
     96    <Media Id="1" Cabinet="product.cab" EmbedCab="yes" DiskPrompt="Installation Media" />
     97    <Property Id="DiskPrompt" Value="Oracle VM VirtualBox Installation" />
    22698<?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
    22799        <Media Id="2" Cabinet="common.cab" EmbedCab="no" CompressionLevel="high" />
    228100<?endif ?>
    229101
    230         <!-- Here comes the file/directory list. -->
    231         <Directory Id="TARGETDIR" Name="SourceDir">
    232            <Directory Id="$(var.Property_ProgramFiles)" Name="PFiles">
    233                 <Directory Id="INSTALLDIR" Name="$(env.VBOX_PRODUCT)">
    234 
    235 <?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
    236                     <Directory Id="dir_Documents" Name="doc">
    237                         <!-- The documentation is a separate component. This allows to split the install process
    238                              into pieces if ever necessary. Maintenance is easier, too. The following component
    239                              will be installed in the "doc" folder. -->
    240                         <Component Id="cp_Docs" Guid="40BD12C5-89A8-4B81-8A5E-5EEE2C2763C4">
    241                             <?include $(env.PATH_TARGET)\Files_Doc.wxi ?>
    242                         </Component>
     102    <!-- *************************** Upgrade packages only ******************************* -->
     103    <!-- Minimum and Maximum specify the range of versions we are supposed to update with this upgrade.
     104         IncludeMaximum and IncludeMinimum specify whether the bound value is actually included in the range or not
     105         (IncludeMaximum = yes meaning to find versions below or equal to the version specified in Maximum while
     106         IncludeMaximum = no only finds those below the Maximum).
     107         OnlyDetect tells the installer not to remove the previous product. This is useful as long as we
     108         only change files in the package -->
     109
     110    <Upgrade Id="C4BAD770-BFE8-4D2C-A592-693028A7215B"> <!-- Upgrade of Sun xVM VirtualBox >= v1.6.0 -->
     111
     112        <!-- Upgrade is flagged if current-install is newer than or equal to package - TODO: should make a dialog appear asking user to confirm downgrade -->
     113        <!-- Setting "OnlyDetect" to "no" makes the installer uninstall an already newer installed version -->
     114        <UpgradeVersion Property="NEWERVERSIONDETECTED" Minimum="$(var.Property_Version)" OnlyDetect="no" />
     115
     116        <!-- Flag is set if the install will trigger an upgrade of an existing install -->
     117        <UpgradeVersion Property="PREVIOUSVERSIONSINSTALLED" Minimum="1.0.0.0" Maximum="$(var.Property_Version)" IncludeMaximum="yes" />
     118
     119    </Upgrade>
     120
     121    <!-- The product's icon table -->
     122    <Icon Id="IconVirtualBox" SourceFile="$(env.VBOX_WINDOWS_ICON_FILE)" />
     123
     124    <Binary Id="VBoxInstallHelper" SourceFile="$(env.PATH_OUT)\bin\VBoxInstallHelper.dll" />
     125
     126    <!-- Custom actions -->
     127
     128    <!-- Figure out where a previous installation was, if any -->
     129<?if $(env.BUILD_TARGET_ARCH) = "amd64" ?>
     130    <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR"
     131                  Value="[ProgramFiles64Folder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
     132
     133    <Property Id="EXISTINGINSTALLDIR" Secure="yes">
     134        <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir"
     135                        Type="raw" Win64="$(var.Property_Win64)"/>
     136    </Property>
     137    <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
     138<?else ?>
     139    <CustomAction Id="ca_OriginalTargetDir" Execute="firstSequence" Property="INSTALLDIR"
     140                  Value="[ProgramFilesFolder]\$(env.VBOX_VENDOR_SHORT)\VirtualBox" />
     141
     142    <Property Id="EXISTINGINSTALLDIR" Secure="yes">
     143        <RegistrySearch Id="RegistryGetInstallPath" Root="HKLM" Key="$(var.Property_RegKey)" Name="InstallDir"
     144                        Type="raw" Win64="$(var.Property_Win64)"/>
     145    </Property>
     146    <CustomAction Id="ca_DefaultTargetDir" Execute="firstSequence" Property="INSTALLDIR" Value="[EXISTINGINSTALLDIR]" />
     147<?endif ?>
     148    <CustomAction Id="ca_UninstallTAPInstances" BinaryKey="VBoxInstallHelper"
     149                  DllEntry="UninstallTAPInstances" Execute="deferred" Return="check" Impersonate="no"/>
     150
     151    <!-- Detect old Sun installation -->
     152    <!-- Force a manual uninstall of an already installed Sun VirtualBox version first -->
     153    <!--<Property Id="VBOXSUN">
     154        <RegistrySearch Id="RegSearchSunVersion" Root="HKLM" Key="SOFTWARE\Sun\VirtualBox" Name="Version" Type="raw" Win64="$(var.Property_Win64)"/>
     155    </Property>
     156    <Condition Message="!(loc.SunFound)">
     157        NOT VBOXSUN
     158    </Condition>-->
     159
     160    <CustomAction Id="ca_StartVBox" Directory="INSTALLDIR" ExeCommand="[INSTALLDIR]\VirtualBox.exe" Return="asyncNoWait" Impersonate="yes" />
     161    <CustomAction Id="ca_CheckSerial" BinaryKey="VBoxInstallHelper" DllEntry="CheckSerial" Impersonate="no"/>
     162
     163    <CustomAction Id="ca_InstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="InstallBranding" Execute="deferred" Return="check" Impersonate="no"/>
     164    <CustomAction Id="ca_InstallBrandingArgs" Property="ca_InstallBranding" Value="[INSTALLDIR]" Execute="immediate"/>
     165
     166    <CustomAction Id="ca_UninstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="UninstallBranding" Execute="deferred" Return="check" Impersonate="no"/>
     167    <CustomAction Id="ca_UninstallBrandingArgs" Property="ca_UninstallBranding" Value="[INSTALLDIR]" Execute="immediate"/>
     168
     169    <Directory Id="TARGETDIR" Name="SourceDir">
     170        <Directory Id="$(var.Property_ProgramFiles)" Name="PFiles">
     171            <Directory Id="INSTALLDIR" Name="$(env.VBOX_PRODUCT)">
     172                <Merge Id="msm_VBoxApp" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeApp)" DiskId="1" />
     173                <Directory Id="dir_Drivers" Name="drivers">
     174                    <Directory Id="dir_USB" Name="USB">
     175                        <Merge Id="msm_VBoxUSB" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeUSB)" DiskId="1" />
    243176                    </Directory>
    244 <?endif ?>
    245                     <!-- Device driver directory -->
    246                     <Directory Id="dir_Drivers" Name="drivers">
    247                         <Directory Id="dir_VBoxDrv" Name="vboxdrv">
    248                             <Component Id="cp_VBoxDrv" Guid="D3E2F2BB-569F-46A2-836C-BDF30FF1EDF8" Win64="$(var.Property_Win64)">
    249                                 <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes"
    250                                                 Legacy="$(var.Property_DriverLegacy)" Sequence="2" PlugAndPlayPrompt="no"/>
    251                                 <File Id="file_VBoxDrv.sys" Name="VBoxDrv.sys"   KeyPath="yes"
    252                                       Source="$(env.PATH_OUT)\bin\VBoxDrv.sys"/>
    253                                 <File Id="file_VBoxDrv.inf" Name="VBoxDrv.inf"
    254                                       Source="$(env.PATH_OUT)\bin\VBoxDrv.inf" />
    255 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    256                                 <File Id="file_VBoxDrv.cat" Name="VBoxDrv.cat"
    257                                       Source="$(env.PATH_OUT)\bin\VBoxDrv.cat" />
    258 <?endif ?>
    259                             </Component>
     177                    <Directory Id="dir_Network" Name="network">
     178<?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
     179                        <Directory Id="dir_NetFlt" Name="netflt">
     180                            <Merge Id="msm_VBoxNetworkFlt" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeNetworkFlt)" DiskId="1" />
    260181                        </Directory>
    261 
    262                         <Directory Id="dir_USB" Name="USB">
    263                             <Directory Id="dir_USBFilter" Name="filter">
    264                                 <Component Id="cp_USBFilterDriver" Guid="B7D782D2-96DF-4775-A0E1-A76CF7B04B65" Win64="$(var.Property_Win64)">
    265                                     <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes"
    266                                                     Legacy="$(var.Property_DriverLegacy)" Sequence="0" PlugAndPlayPrompt="no"/>
    267                                     <File Id="file_VBoxUSBMon.sys" Name="VBoxUSBMon.sys"
    268                                           Source="$(env.PATH_OUT)\bin\VBoxUSBMon.sys" />
    269                                     <File Id="file_VBoxUSBMon.inf" Name="VBoxUSBMon.inf"
    270                                           Source="$(env.PATH_OUT)\bin\VBoxUSBMon.inf" />
    271 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    272                                     <File Id="file_VBoxUSBMon.cat" Name="VBoxUSBMon.cat"
    273                                           Source="$(env.PATH_OUT)\bin\VBoxUSBMon.cat" />
    274 <?endif ?>
    275                                 </Component>
    276                             </Directory>
    277 
    278                             <Directory Id="dir_USBDevice" Name="device">
    279                                 <Component Id="cp_USBDeviceDriver" Guid="010FE46A-E358-43E2-8BDC-38BC8BEC82E0" Win64="$(var.Property_Win64)">
    280                                     <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes"
    281                                                     Legacy="$(var.Property_DriverLegacy)" Sequence="0" PlugAndPlayPrompt="no"/>
    282                                     <File Id="file_VBoxUSB.sys" Name="VBoxUSB.sys"
    283                                           Source="$(env.PATH_OUT)\bin\VBoxUSB.sys" />
    284                                     <File Id="file_VBoxUSB.inf" Name="VBoxUSB.inf"
    285                                           Source="$(env.PATH_OUT)\bin\VBoxUSB.inf" />
    286 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    287                                     <File Id="file_VBoxUSB.cat" Name="VBoxUSB.cat"
    288                                           Source="$(env.PATH_OUT)\bin\VBoxUSB.cat" />
    289 <?endif ?>
    290                                 </Component>
    291                             </Directory>
    292                         </Directory>
    293 
    294 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
    295                         <Directory Id="dir_Network" Name="network">
    296                             <Directory Id="dir_NetFlt" Name="netflt">
    297                                 <Component Id="cp_NetFltDriver" Guid="F0A02F6B-A349-42f8-A2EB-569DCAAAF846" Win64="$(var.Property_Win64)">
    298                                     <File Id="file_VBoxNetFlt.sys" Name="VBoxNetFlt.sys"   KeyPath="yes"
    299                                           Source="$(env.PATH_OUT)\bin\VBoxNetFlt.sys" Checksum="yes"/>
    300                                     <File Id="file_VBoxNetFltNobj.sys" Name="VBoxNetFltNobj.dll"
    301                                           Source="$(env.PATH_OUT)\bin\VBoxNetFltNobj.dll" Checksum="yes"/>
    302                                     <File Id="file_VBoxNetFltM.inf" Name="VBoxNetFltM.inf"
    303                                           Source="$(env.PATH_OUT)\bin\VBoxNetFltM.inf" />
    304                                     <File Id="file_VBoxNetFlt.inf" Name="VBoxNetFlt.inf"
    305                                           Source="$(env.PATH_OUT)\bin\VBoxNetFlt.inf" />
    306 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    307                                     <File Id="file_VBoxNetFlt.cat" Name="VBoxNetFlt.cat"
    308                                           Source="$(env.PATH_OUT)\bin\VBoxNetFlt.cat" />
    309 <?endif ?>
    310                                 </Component>
    311                             </Directory>
    312 
    313                             <Directory Id="dir_NetAdp" Name="netadp">
    314                                 <Component Id="cp_NetAdpDriver" Guid="7adf3e12-af3c-4d36-8bec-36d5064cf84f" Win64="$(var.Property_Win64)">
    315                                     <File Id="file_VBoxNetAdp.sys" Name="VBoxNetAdp.sys" KeyPath="yes"
    316                                           Source="$(env.PATH_OUT)\bin\VBoxNetAdp.sys" Checksum="yes"/>
    317                                     <File Id="file_VBoxNetAdp.inf" Name="VBoxNetAdp.inf"
    318                                           Source="$(env.PATH_OUT)\bin\VBoxNetAdp.inf" />
    319 <?if $(env.VBOX_SIGNING_MODE) != none ?>
    320                                     <File Id="file_VBoxNetAdp.cat" Name="VBoxNetAdp.cat"
    321                                           Source="$(env.PATH_OUT)\bin\VBoxNetAdp.cat" />
    322 <?endif ?>
    323                                 </Component>
    324                             </Directory>
    325                         </Directory>
    326 <?endif ?>
    327                     </Directory> <!-- Directory "drivers" -->
    328 
    329 
    330                     <!-- National Language Support directory -->
    331                     <Directory Id="dir_NLS" Name="nls">
    332                         <Component Id="cp_NLS" Guid="D63517D7-1CF3-4D06-B3EE-C561E323069B" Win64="$(var.Property_Win64)">
    333                             <!-- Include the autogenerated NLS file list -->
    334                             <?include $(env.PATH_TARGET)\VBoxGuiNLS.wxi ?>
    335                         </Component>
    336                     </Directory>
    337 
    338 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
    339                     <Directory Id="dir_X86" Name="x86">
    340                         <!-- The 32-bit client COM component (see also cp_MainCom below). -->
    341                         <Component Id="cp_MainCOM_x86" Guid="B600824E-4A25-2EB3-4B44-3D8CB7F9B92D" Win64="no">
    342                             <File Id="VBoxClient_x86" Name="VBoxClient-x86.dll"
    343                                 Source="$(env.PATH_OUT)\bin\x86\VBoxClient-x86.dll" KeyPath="yes">
    344                             </File>
    345                             <File Id="VBoxRT_x86" Name="VBoxRT-x86.dll"
    346                                 Source="$(env.PATH_OUT)\bin\x86\VBoxRT-x86.dll">
    347                             </File>
    348                             <?include $(env.PATH_TARGET)\VirtualBox_TypeLib_x86.wxi ?>
    349 <?if $(env.VBOX_VCC_TOOL_STEM) = "VCC100" ?>
    350                             <!-- MS C/C++ v10.0 32 bit Runtime DLL files. -->
    351                             <File Id="file_msvcr100.dll_x86" Name="msvcr100.dll"
    352                                   Source="$(env.PATH_OUT)\bin\x86\msvcr100.dll" />
    353                             <File Id="file_msvcp100.dll_x86" Name="msvcp100.dll"
    354                                   Source="$(env.PATH_OUT)\bin\x86\msvcp100.dll" />
    355 <?endif?>
    356 <?if $(env.VBOX_VCC_TOOL_STEM) = "VCC110" ?>
    357                             <!-- MS C/C++ v11.0 Runtime DLL files. -->
    358                             <File Id="file_msvcr110.dll_x86" Name="msvcr110.dll"
    359                                   Source="$(env.PATH_OUT)\bin\x86\msvcr110.dll" />
    360                             <File Id="file_msvcp110.dll_x86" Name="msvcp110.dll"
    361                                   Source="$(env.PATH_OUT)\bin\x86\msvcp110.dll" />
    362 <?endif?>
    363                         </Component>
    364                     </Directory>
    365 <?endif?>
    366 
    367                     <!-- COM components have a separate entry mainly because of the KeyPath attribute (that hints the
    368                          TypeLib element where to take the TLB resource from) may appear only once per Component. -->
    369                     <Component Id="cp_MainCOM" Guid="CD4A3C6C-C2D5-428D-90A1-B6DA3D0777D6" Win64="$(var.Property_Win64)">
    370 
    371                         <!-- File ID *must not* be changed because of our typelib template generation file! -->
    372                         <File Id="VBoxSVC" Name="VBoxSVC.exe"
    373                               Source="$(env.PATH_OUT)\bin\VBoxSVC.exe">
    374                         </File>
    375 
    376                         <!-- We set KeyPath on this file to instruct TypeLib to read the TLB resource from it
    377                              and create appropriate Interface registry entries. Note that the same TLB is present
    378                              in VBoxSVC.exe - it's just a matter of choice which one to use -->
    379                         <!-- File ID *must not* be changed because of our typelib template generation file! -->
    380                         <File Id="VBoxC" Name="VBoxC.dll"
    381                               Source="$(env.PATH_OUT)\bin\VBoxC.dll" KeyPath="yes">
    382                         </File>
    383 
    384                         <!-- Include the autogenerated TypeLib block -->
    385                         <?include $(env.PATH_TARGET)\VirtualBox_TypeLib.wxi ?>
    386 
    387                     </Component>
    388 
    389                     <!--
    390 
    391                     <Component Id="cp_StartMenuShortcut" Guid="1C137D24-E599-47BD-98D0-2F62F202A8EA" Win64="$(var.Property_Win64)">
    392                         <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string"
    393                                        Value="installed" KeyPath="yes" />
    394                         <Shortcut Id="ShortcutStartMenuVBox" Directory="ProgramMenuDir"
    395                                   Name="VirtualBox" WorkingDirectory="INSTALLDIR" Advertise="no" Target="VirtualBox.exe" />
    396                         <RemoveFolder Id="ShortcutStartMenuVBoxRemove" On="uninstall" />
    397                     </Component>-->
    398 
    399                     <!---->
    400 
    401                     <Component Id="cp_RegisterExtensions" Guid="FEB8943E-5D60-4E2D-846F-458207019D40" Win64="$(var.Property_Win64)">
    402                         <Condition>REGISTERFILEEXTENSIONS</Condition>
    403                         <!-- Register file extensions. Note: Extension Id's *must not* be changed! These specify the actual
    404                              file extension to handle. Also, here would be the place to add more fancy DDE stuff later.
    405                              Important: The IDs in "IconIndex" *must* be matching "Resources\resource.h". -->
    406                         <ProgId Id="progId_VirtualBox.Shell.vbox" Description="VirtualBox Machine Definition" Icon="file_VBoxRes.dll" IconIndex="-201">
    407                             <Extension Id="vbox" ContentType="application/x-virtualbox-vbox">
    408                                 <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
    409                             </Extension>
    410                         </ProgId>
    411                         <ProgId Id="progId_VirtualBox.Shell.vbox-extpack" Description="VirtualBox Extension Pack" Icon="file_VBoxRes.dll" IconIndex="-202">
    412                             <Extension Id="vbox-extpack" ContentType="application/x-virtualbox-vbox-extpack">
    413                                 <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
    414                             </Extension>
    415                         </ProgId>
    416                         <ProgId Id="progId_VirtualBox.Shell.ovf" Description="Open Virtualization Format" Icon="file_VBoxRes.dll" IconIndex="-301">
    417                             <Extension Id="ovf" ContentType="application/x-virtualbox-ovf">
    418                                 <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
    419                             </Extension>
    420                         </ProgId>
    421                         <ProgId Id="progId_VirtualBox.Shell.ova" Description="Open Virtualization Format Archive" Icon="file_VBoxRes.dll" IconIndex="-302">
    422                             <Extension Id="ova" ContentType="application/x-virtualbox-ova">
    423                                 <Verb Id="open" Command="Open" TargetFile="file_VirtualBox.exe" Argument="&quot;%1&quot;" />
    424                             </Extension>
    425                         </ProgId>
    426                         <ProgId Id="progId_VirtualBox.Shell.vdi" Description="Virtual Disk Image" Icon="file_VBoxRes.dll" IconIndex="-303">
    427                             <Extension Id="vdi" ContentType="application/x-virtualbox-vdi" />
    428                         </ProgId>
    429                         <ProgId Id="progId_VirtualBox.Shell.vmdk" Description="Virtual Machine Disk Format" Icon="file_VBoxRes.dll" IconIndex="-304">
    430                             <Extension Id="vmdk" ContentType="application/x-virtualbox-vmdk" />
    431                         </ProgId>
    432                         <ProgId Id="progId_VirtualBox.Shell.vhd" Description="Virtual Hard Disk" Icon="file_VBoxRes.dll" IconIndex="-305">
    433                             <Extension Id="vhd" ContentType="application/x-virtualbox-vhd" />
    434                         </ProgId>
    435                         <ProgId Id="progId_VirtualBox.Shell.hdd" Description="Virtual Hard Disk" Icon="file_VBoxRes.dll" IconIndex="-306">
    436                             <Extension Id="hdd" ContentType="application/x-virtualbox-hdd" />
    437                         </ProgId>
    438                     </Component> <!-- RegisterExtensions -->
    439 
    440                     <!-- All Binaries, DLLs (except COM) and drivers are in one component because they belong together. Additional
    441                          binaries e.g. test tools, utilities etc. should be in another component so they"re clearly separated. -->
    442                     <Component Id="cp_MainBinaries" Guid="5C8FE57A-F744-4DE0-AA3F-A563F486AD98" Win64="$(var.Property_Win64)">
    443 
    444                         <!-- Set required environment variables. -->
    445                         <Environment Id="env_VBoxInstallDir" Action="set" Name="VBOX_INSTALL_PATH"
    446                                      System="yes" Part="last" Permanent="no" Value="[INSTALLDIR]" />
    447 
    448                         <!-- Files -->
    449 <?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
    450                         <!-- Include all user manual .CHM files (file is generated by makefile). -->
    451                         <?include $(env.PATH_TARGET)\Files_Main.wxi ?>
    452 <?endif ?>
    453                         <!-- Include all license files (file is generated by makefile). -->
    454                         <?include $(env.PATH_TARGET)\Files_License.wxi ?>
    455 
    456                         <!-- Frontends -->
    457                         <File Id="file_VBoxManage.exe" Name="VBoxManage.exe"
    458                               Source="$(env.PATH_OUT)\bin\VBoxManage.exe" />
    459                         <File Id="file_VBoxHeadless.exe" Name="VBoxHeadless.exe"
    460                               Source="$(env.PATH_OUT)\bin\VBoxHeadless.exe">
    461                             <!-- Create a simple shortcut for VBoxVRDP, which is not present anymore, pointing to VBoxHeadless.exe -->
    462                        <!--     <Shortcut Id="ShortcutVBoxVRDP" Directory="INSTALLDIR" Name="VBoxVRDP" Show="normal" WorkingDirectory="INSTALLDIR"/> -->
    463                         </File>
    464                         <File Id="file_VBoxBalloonCtrl.exe" Name="VBoxBalloonCtrl.exe"
    465                               Source="$(env.PATH_OUT)\bin\VBoxBalloonCtrl.exe"/>
    466 
    467                         <!-- Misc tools -->
    468                         <File Id="file_VBoxNetDHCP.exe" Name="VBoxNetDHCP.exe"
    469                               Source="$(env.PATH_OUT)\bin\VBoxNetDHCP.exe"/>
    470                         <File Id="file_VBoxNetNAT.exe" Name="VBoxNetNAT.exe"
    471                               Source="$(env.PATH_OUT)\bin\VBoxNetNAT.exe"/>
    472 <?if $(env.VBOX_WITH_EXTPACK) = "yes" ?>
    473                         <File Id="file_VBoxExtPackHelperApp.exe" Name="VBoxExtPackHelperApp.exe"
    474                               Source="$(env.PATH_OUT)\bin\VBoxExtPackHelperApp.exe"/>
    475 <?endif ?>
    476                         <!-- VBox DLL files -->
    477                         <File Id="file_VBoxDD.dll" Name="VBoxDD.dll"
    478                               Source="$(env.PATH_OUT)\bin\VBoxDD.dll" />
    479                         <File Id="file_VBoxDD2.dll" Name="VBoxDD2.dll"
    480                               Source="$(env.PATH_OUT)\bin\VBoxDD2.dll" />
    481                         <File Id="file_VBoxDDU.dll" Name="VBoxDDU.dll"
    482                               Source="$(env.PATH_OUT)\bin\VBoxDDU.dll" />
    483                         <File Id="file_VBoxRT.dll" Name="VBoxRT.dll"
    484                               Source="$(env.PATH_OUT)\bin\VBoxRT.dll" />
    485                         <File Id="file_VBoxREM.dll" Name="VBoxREM.dll"
    486                               Source="$(env.PATH_OUT)\bin\VBoxREM.dll" />
    487 <?if $(env.BUILD_TARGET_ARCH) = "x86" ?>
    488                         <File Id="file_VBoxREM32.dll" Name="VBoxREM32.dll"
    489                               Source="$(env.PATH_OUT)\bin\VBoxREM32.dll" />
    490                         <File Id="file_VBoxREM64.dll" Name="VBoxREM64.dll"
    491                               Source="$(env.PATH_OUT)\bin\VBoxREM64.dll" />
    492 <?endif ?>
    493                         <File Id="file_VBoxVMM.dll" Name="VBoxVMM.dll"
    494                               Source="$(env.PATH_OUT)\bin\VBoxVMM.dll" />
    495 <?if $(env.VBOX_WITH_VRDP) = "yes" ?>
    496                         <File Id="file_VBoxVRDP.dll" Name="VBoxVRDP.dll"
    497                               Source="$(env.PATH_OUT)\bin\VBoxVRDP.dll" />
    498 <?endif ?>
    499                         <File Id="file_VBoxSharedFolders.dll" Name="VBoxSharedFolders.dll"
    500                               Source="$(env.PATH_OUT)\bin\VBoxSharedFolders.dll" />
    501                         <File Id="file_VBoxSharedClipboard.dll" Name="VBoxSharedClipboard.dll"
    502                               Source="$(env.PATH_OUT)\bin\VBoxSharedClipboard.dll" />
    503 <?if $(env.VBOX_WITH_DRAG_AND_DROP)= "yes" ?>
    504                         <File Id="file_VBoxDragAndDropSvc.dll" Name="VBoxDragAndDropSvc.dll"
    505                               Source="$(env.PATH_OUT)\bin\VBoxDragAndDropSvc.dll" />
    506 <?endif ?>
    507 <?if $(env.VBOX_WITH_GUEST_PROPS) = "yes" ?>
    508                         <File Id="file_VBoxGuestPropSvc.dll" Name="VBoxGuestPropSvc.dll"
    509                               Source="$(env.PATH_OUT)\bin\VBoxGuestPropSvc.dll" />
    510 <?endif ?>
    511 <?if $(env.VBOX_WITH_GUEST_CONTROL) = "yes" ?>
    512                         <File Id="file_VBoxGuestControlSvc.dll" Name="VBoxGuestControlSvc.dll"
    513                               Source="$(env.PATH_OUT)\bin\VBoxGuestControlSvc.dll" />
    514 <?endif ?>
    515                         <File Id="file_VBoxHostChannel.dll" Name="VBoxHostChannel.dll"
    516                               Source="$(env.PATH_OUT)\bin\VBoxHostChannel.dll" />
    517                         <File Id="file_VBoxAuth.dll" Name="VBoxAuth.dll"
    518                               Source="$(env.PATH_OUT)\bin\VBoxAuth.dll" />
    519                         <File Id="file_VBoxAuthSimple.dll" Name="VBoxAuthSimple.dll"
    520                               Source="$(env.PATH_OUT)\bin\VBoxAuthSimple.dll" />
    521 
    522                         <!-- Include resource DLL (icons, ...). -->
    523                         <File Id="file_VBoxRes.dll" Name="VBoxRes.dll" DiskId="$(var.Property_DiskIdCommon)"
    524                               Source="$(env.PATH_OUT)\bin\VBoxRes.dll" />
    525 
    526                         <File Id="file_VMMGC.gc" Name="VMMGC.gc"
    527                               Source="$(env.PATH_OUT)\bin\VMMGC.gc" />
    528                         <File Id="file_VBoxDDGC.gc" Name="VBoxDDGC.gc"
    529                               Source="$(env.PATH_OUT)\bin\VBoxDDGC.gc" />
    530                         <File Id="file_VBoxDD2GC.gc" Name="VBoxDD2GC.gc"
    531                               Source="$(env.PATH_OUT)\bin\VBoxDD2GC.gc" />
    532 
    533                         <File Id="file_VMMR0.r0" Name="VMMR0.r0"
    534                               Source="$(env.PATH_OUT)\bin\VMMR0.r0" />
    535                         <File Id="file_VBoxDDR0.r0" Name="VBoxDDR0.r0"
    536                               Source="$(env.PATH_OUT)\bin\VBoxDDR0.r0" />
    537                         <File Id="file_VBoxDD2R0.r0" Name="VBoxDD2R0.r0"
    538                               Source="$(env.PATH_OUT)\bin\VBoxDD2R0.r0" />
    539 
    540 <?if $(env.VBOX_WITH_CROGL) = "yes" ?>
    541                         <File Id="file_VBoxTestOGL.exe" Name="VBoxTestOGL.exe"
    542                               Source="$(env.PATH_OUT)\bin\VBoxTestOGL.exe" />
    543 <?endif ?>
    544                         <!-- Qt frontend -->
    545                         <File Id="file_VirtualBox.exe" Name="VirtualBox.exe"
    546                               Source="$(env.PATH_OUT)\bin\VirtualBox.exe">
    547                         </File>
    548                         <File Id="file_QtCoreVBox4.dll" Name="QtCoreVBox4.dll"
    549                               Source="$(env.PATH_OUT)\bin\QtCoreVBox4.dll" />
    550                         <File Id="file_QtGuiVBox4.dll" Name="QtGuiVBox4.dll"
    551                               Source="$(env.PATH_OUT)\bin\QtGuiVBox4.dll" />
    552                         <File Id="file_QtNetworkVBox4.dll" Name="QtNetworkVBox4.dll"
    553                               Source="$(env.PATH_OUT)\bin\QtNetworkVBox4.dll" />
    554 <?if $(env.VBOX_WITH_DEBUGGER_GUI) = "yes" ?>
    555                         <File Id="file_VBoxDbg.dll" Name="VBoxDbg.dll"
    556                               Source="$(env.PATH_OUT)\bin\VBoxDbg.dll" />
    557 <?endif ?>
    558 <?if $(env.VBOX_GUI_USE_QGL) = "yes" ?>
    559                         <File Id="file_QtOpenGLVBox4.dll" Name="QtOpenGLVBox4.dll"
    560                               Source="$(env.PATH_OUT)\bin\QtOpenGLVBox4.dll" />
    561 <?endif?>
    562 
    563 <?if $(env.VBOX_VCC_TOOL_STEM) = "VCC100" ?>
    564                         <!-- MS C/C++ v10.0 Runtime DLL files. -->
    565                         <File Id="file_msvcr100.dll" Name="msvcr100.dll"
    566                               Source="$(env.PATH_OUT)\bin\msvcr100.dll" />
    567                         <File Id="file_msvcp100.dll" Name="msvcp100.dll"
    568                               Source="$(env.PATH_OUT)\bin\msvcp100.dll" />
    569 <?endif?>
    570 <?if $(env.VBOX_VCC_TOOL_STEM) = "VCC110" ?>
    571                         <!-- MS C/C++ v11.0 Runtime DLL files. -->
    572                         <File Id="file_msvcr110.dll" Name="msvcr110.dll"
    573                               Source="$(env.PATH_OUT)\bin\msvcr110.dll" />
    574                         <File Id="file_msvcp110.dll" Name="msvcp110.dll"
    575                               Source="$(env.PATH_OUT)\bin\msvcp110.dll" />
    576 <?endif?>
    577 
    578                         <!-- EFI firmware -->
    579 <?if $(env.VBOX_WITH_EFIFW_PACKING) = "yes" ?>
    580                         <File Id="file_VBoxEFI32.fd" Name="VBoxEFI32.fd" DiskId="$(var.Property_DiskIdCommon)"
    581                               Source="$(env.PATH_OUT)\bin\VBoxEFI32.fd" />
    582                         <File Id="file_VBoxEFI64.fd" Name="VBoxEFI64.fd" DiskId="$(var.Property_DiskIdCommon)"
    583                               Source="$(env.PATH_OUT)\bin\VBoxEFI64.fd" />
    584 <?endif?>
    585                         <!-- VBox guest additions -->
    586 <?if $(env.VBOX_WITH_ADDITIONS_PACKING) = "yes" ?>
    587     <?if $(env.VBOX_WITH_COMBINED_PACKAGE) = "yes" ?>
    588                         <File Id="file_VBoxGuestAdditions.iso" Name="VBoxGuestAdditions.iso" DiskId="$(var.Property_DiskIdCommon)"
    589                               Source="$(env.PATH_MULTIARCH_GUEST_ADDITIONS_ISO)\VBoxGuestAdditions.iso" />
    590     <?else ?>
    591                         <File Id="file_VBoxGuestAdditions.iso" Name="VBoxGuestAdditions.iso"
    592                               Source="$(env.PATH_OUT)\bin\additions\VBoxGuestAdditions.iso" />
    593     <?endif ?>
    594 <?endif ?>
    595                         <!-- Include key for VBox version -->
    596                         <?include $(env.PATH_TARGET)\VBoxKey.wxi ?>
    597 
    598                     </Component> <!-- MainBinaries -->
    599 
    600 <?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
    601                     <!-- Qt accessible plugins -->
    602                     <Directory Id="dir_Accessible" Name="accessible">
    603                         <Component Id="cp_QtAccessible" Guid="12040EF9-D4A8-4FB2-A69C-CA2F5C354A45" Win64="$(var.Property_Win64)">
    604                             <File Id="file_qtaccessiblewidgets4.dll" Name="qtaccessiblewidgets4.dll"
    605                                   Source="$(env.PATH_OUT)\bin\accessible\qtaccessiblewidgets4.dll" />
    606                         </Component>
    607                     </Directory>
    608 <?endif?>
    609 
    610 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
    611                     <!-- Python bindings -->
    612                     <Directory Id="dir_SDK" Name="sdk">
    613                         <Directory Id="dir_SDKInstall" Name="install">
    614                             <Component Id="cp_VBoxPyInst" Guid="C9A40306-5102-11DE-A7BA-C3C555D89593" Win64="$(var.Property_Win64)">
    615                                  <File Id="file_vboxapisetup.py" Name="vboxapisetup.py" DiskId="$(var.Property_DiskIdCommon)"
    616                                        Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapisetup.py" />
    617                             </Component>
    618                             <Directory Id="dir_SDKVBoxAPI" Name="vboxapi">
    619                                 <Component Id="cp_VBoxPyMod" Guid="DF19CB76-5102-11DE-943B-13C755D89593" Win64="$(var.Property_Win64)">
    620                                     <File Id="file___init__.py" Name="__init__.py" DiskId="$(var.Property_DiskIdCommon)"
    621                                           Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapi\__init__.py" />
    622                                     <File Id="file_VirtualBox_constants.py" Name="VirtualBox_constants.py" DiskId="$(var.Property_DiskIdCommon)"
    623                                           Source="$(env.PATH_OUT)\bin\sdk\installer\vboxapi\VirtualBox_constants.py" />
    624                                 </Component>
    625                             </Directory>
     182<?endif ?>
     183                        <Directory Id="dir_NetAdp" Name="netadp">
     184                            <Merge Id="msm_VBoxNetworkAdp" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergeNetworkAdp)" DiskId="1" />
    626185                        </Directory>
    627186                    </Directory>
    628 <?endif?>
    629 
    630 <?if $(env.VBOX_WITH_CROGL) = "yes" ?>
    631                     <Component Id="cp_VBoxCROpenGL" Guid="874A1297-835A-491D-8A9D-7E723BC29EE7" Win64="$(var.Property_Win64)">
    632                         <File Id="file_VBoxOGLhostcrutil.dll" Name="VBoxOGLhostcrutil.dll"
    633                               Source="$(env.PATH_OUT)\bin\VBoxOGLhostcrutil.dll" />
    634                         <File Id="file_VBoxOGLhosterrorspu.dll" Name="VBoxOGLhosterrorspu.dll"
    635                               Source="$(env.PATH_OUT)\bin\VBoxOGLhosterrorspu.dll" />
    636                         <File Id="file_VBoxOGLrenderspu.dll" Name="VBoxOGLrenderspu.dll"
    637                               Source="$(env.PATH_OUT)\bin\VBoxOGLrenderspu.dll" />
    638                         <File Id="file_VBoxSharedCrOpenGL.dll" Name="VBoxSharedCrOpenGL.dll"
    639                               Source="$(env.PATH_OUT)\bin\VBoxSharedCrOpenGL.dll" />
    640                     </Component>
    641 <?endif?>
    642                     <!-- SDL plugins -->
    643                     <Component Id="cp_VBoxSDLBinaries" Guid="F09D5FD9-E176-42B0-90A9-481BB18B0CB4" Win64="$(var.Property_Win64)">
    644                         <File Id="file_VBoxSDL.exe" Name="VBoxSDL.exe"
    645                               Source="$(env.PATH_OUT)\bin\VBoxSDL.exe" />
    646                         <File Id="file_SDL.dll" Name="SDL.dll"
    647                               Source="$(env.PATH_OUT)\bin\SDL.dll" />
    648 <?if $(env.VBOX_WITH_SECURELABEL) = "yes" ?>
    649                         <File Id="file_SDL_ttf.dll" Name="SDL_ttf.dll"
    650                               Source="$(env.PATH_OUT)\bin\SDL_ttf.dll" />
    651 <?endif?>
    652                     </Component> <!-- SDL plugins -->
    653 
    654 <?if $(env.VBOX_WITH_WEBSERVICES) = "yes" ?>
    655                     <!-- Webservice -->
    656                     <Component Id="cp_VBoxWebService" Guid="DD404F04-9874-43E9-AEE2-7762924D922E">
    657                         <File Id="file_VBoxWebSrv.exe" Name="VBoxWebSrv.exe"
    658                               Source="$(env.PATH_OUT)\bin\vboxwebsrv.exe" />
    659                     </Component>
    660 <?endif?>
    661 
    662                     <!-- C API (glue) binding -->
    663                     <Component Id="cp_VBoxCAPI" Guid="097F7F53-7111-467F-8E0C-257D9926FDA0">
    664                         <File Id="file_VBoxCAPI.dll" Name="VBoxCAPI.dll"
    665                               Source="$(env.PATH_OUT)\bin\VBoxCAPI.dll" />
    666                     </Component>
    667 
     187                </Directory>
    668188<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
    669                     <Component Id="cp_VBoxPythonBinding" Guid="293D7E11-78DA-4C31-AEED-AE2FE42F6881">
    670                         <Condition>PYTHON_INSTALLED</Condition>
    671                     </Component>
    672 <?endif?>
    673                 </Directory> <!-- Installation directory -->
    674             </Directory> <!-- Windows program files directory -->
    675 
    676             <!-- Set up special directory IDs for referencing to the start menu
    677                  or the Quick Launch bar.
    678                  See: http://msdn.microsoft.com/en-us/library/aa368276.aspx
    679                       http://wix.mindcapers.com/wiki/Shortcuts_in_WiX -->
    680             <Directory Id="ProgramMenuFolder">
    681                 <Directory Id="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)"/>
    682             </Directory>
    683 
    684             <Directory Id="DesktopFolder" Name="Desktop"/>
    685 
    686             <Directory Id="AppDataFolder" Name="AppData">
    687                 <Directory Id="dir_AppDataMicrosoft" Name="Microsoft">
    688                     <Directory Id="dir_AppDataMSIE" Name="Internet Explorer">
    689                         <Directory Id="dir_QuicklaunchFolder" Name="Quick Launch"/>
     189                <Directory Id="dir_SDK" Name="sdk">
     190                    <Directory Id="dir_SDKInstall" Name="install">
     191                        <Merge Id="msm_VBoxPython" Language="!(loc.LANG)" SourceFile="$(var.Property_VBoxMergePython)" DiskId="1" />
    690192                    </Directory>
    691193                </Directory>
     194<?endif ?>
     195                <!-- Set up special directory IDs for referencing to the start menu
     196                     or the Quick Launch bar.
     197                     See: http://msdn.microsoft.com/en-us/library/aa368276.aspx
     198                          http://wix.mindcapers.com/wiki/Shortcuts_in_WiX -->
     199                <Directory Id="ProgramMenuFolder">
     200                    <Directory Id="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)"/>
     201                </Directory>
     202
     203                <Directory Id="DesktopFolder" Name="Desktop"/>
     204
     205                <Directory Id="AppDataFolder" Name="AppData">
     206                    <Directory Id="dir_AppDataMicrosoft" Name="Microsoft">
     207                        <Directory Id="dir_AppDataMSIE" Name="Internet Explorer">
     208                            <Directory Id="dir_QuicklaunchFolder" Name="Quick Launch"/>
     209                        </Directory>
     210                    </Directory>
     211                </Directory>
     212
     213                <!-- Shortcut(s) in start menu -->
     214                <Component Id="cp_StartMenuVBox" Guid="C2DC321A-CE63-40EE-8A98-724DF8BD12FB" Win64="$(var.Property_Win64)">
     215                    <Shortcut Id="sc_StartMenuVBox" Directory="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
     216                              Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
     217                    <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)"
     218                                   Type="string" Value="installed" KeyPath="yes" />
     219                    <?include $(env.PATH_TARGET)\Shortcuts_StartMenu.wxi ?>
     220                </Component>
     221
     222                <Component Id="cp_DesktopShortcut" Guid="668F8A1A-F5CE-48B3-BB1A-3042EE27B279" Win64="$(var.Property_Win64)">
     223                    <Condition>VBOX_INSTALLDESKTOPSHORTCUT</Condition>
     224                    <Shortcut Id="sc_DesktopVBox" Directory="DesktopFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
     225                              Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
     226                    <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string"
     227                                   Value="installed" KeyPath="yes" />
     228                </Component>
     229
     230                <Component Id="cp_QuickLaunchVBox" Guid="CC19E026-938A-41CB-8E77-3F33296244B6" Win64="$(var.Property_Win64)">
     231                    <CreateFolder/>
     232                    <Condition>VBOX_INSTALLQUICKLAUNCHSHORTCUT</Condition>
     233                    <Shortcut Id="sc_QuickLaunchVBox" Directory="dir_QuicklaunchFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
     234                              Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
     235                    <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)"
     236                                   Type="string" Value="installed" KeyPath="yes" />
     237                </Component>
     238
    692239            </Directory>
    693 
    694             <!-- Shortcut(s) in start menu -->
    695             <Component Id="cp_StartMenuVBox" Guid="C2DC321A-CE63-40EE-8A98-724DF8BD12FB" Win64="$(var.Property_Win64)">
    696                 <Shortcut Id="sc_StartMenuVBox" Directory="dir_StartMenuVBox" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
    697                           Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
    698                 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)"
    699                                Type="string" Value="installed" KeyPath="yes" />
    700                 <?include $(env.PATH_TARGET)\Shortcuts_StartMenu.wxi ?>
    701             </Component>
    702 
    703             <Component Id="cp_DesktopShortcut" Guid="668F8A1A-F5CE-48B3-BB1A-3042EE27B279" Win64="$(var.Property_Win64)">
    704                 <Condition>INSTALLDESKTOPSHORTCUT</Condition>
    705                 <Shortcut Id="sc_DesktopVBox" Directory="DesktopFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
    706                           Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
    707                 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)" Type="string"
    708                                Value="installed" KeyPath="yes" />
    709             </Component>
    710 
    711             <Component Id="cp_QuickLaunchVBox" Guid="CC19E026-938A-41CB-8E77-3F33296244B6" Win64="$(var.Property_Win64)">
    712                 <CreateFolder/>
    713                 <Condition>INSTALLQUICKLAUNCHSHORTCUT</Condition>
    714                 <Shortcut Id="sc_QuickLaunchVBox" Directory="dir_QuicklaunchFolder" Name="$(env.VBOX_PRODUCT)" Description="$(env.VBOX_PRODUCT)"
    715                           Target="[INSTALLDIR]VirtualBox.exe" WorkingDirectory="INSTALLDIR"/>
    716                 <RegistryValue Root="HKCU" Key="$(var.Property_RegKeyInstall)"
    717                                Type="string" Value="installed" KeyPath="yes" />
    718             </Component>
    719         </Directory> <!-- TARGETDIR -->
    720 
    721         <!-- Note: Feature IDs *must not* be renamed to use any prefixes or such,
    722                    otherwise this will break manual selection using the ADDLOCAL= syntax
    723                    when using the command line / scripts (see VBox manual). -->
    724         <Feature Id="VBoxApplication" Title="VirtualBox Application" Level="1"
    725                  Description="!(loc.VB_App)"
     240        </Directory>
     241    </Directory> <!-- TARGETDIR -->
     242
     243    <!-- Note: Feature IDs *must not* be renamed to use any prefixes or such,
     244               otherwise this will break manual selection using the ADDLOCAL= syntax
     245               when using the command line / scripts (see VBox manual). -->
     246    <Feature Id="VBoxApplication" Title="VirtualBox Application" Level="1"
     247             Description="!(loc.VB_App)"
     248             ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
     249             Absent="disallow" AllowAdvertise="no" >
     250        <MergeRef Id="msm_VBoxApp" />
     251
     252        <ComponentRef Id="cp_StartMenuVBox" />
     253        <ComponentRef Id="cp_DesktopShortcut" />
     254        <ComponentRef Id="cp_QuickLaunchVBox" />
     255
     256        <Feature Id="VBoxUSB" Title="VirtualBox USB Support" Level="1"
     257                 Description="!(loc.VB_USBDriver)"
    726258                 ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    727                  Absent="disallow" AllowAdvertise="no" >
    728 
    729             <ComponentRef Id="cp_StartMenuVBox" />
    730             <ComponentRef Id="cp_DesktopShortcut" />
    731             <ComponentRef Id="cp_QuickLaunchVBox" />
    732             <ComponentRef Id="cp_RegisterExtensions" />
    733 
    734 <?if $(env.VBOX_WITH_DOCS_PACKING) = "yes" ?>
    735             <ComponentRef Id="cp_Docs" />
    736 <?endif?>
    737             <ComponentRef Id="cp_NLS" />
    738 <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?>
    739             <ComponentRef Id="cp_MainCOM_x86" />
    740 <?endif?>
    741             <ComponentRef Id="cp_MainCOM" />
    742             <ComponentRef Id="cp_MainBinaries" />
    743 <?if $(env.VBOX_WITH_QTGUI) = "yes" ?>
    744             <ComponentRef Id="cp_QtAccessible" />
    745 <?endif?>
    746 <?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
    747             <ComponentRef Id="cp_VBoxPyInst" />
    748             <ComponentRef Id="cp_VBoxPyMod" />
    749 <?endif?>
    750 
    751 <?if $(env.VBOX_WITH_CROGL) = "yes" ?>
    752             <ComponentRef Id="cp_VBoxCROpenGL" />
    753 <?endif?>
    754             <ComponentRef Id="cp_VBoxSDLBinaries" />
    755 <?if $(env.VBOX_WITH_WEBSERVICES) = "yes" ?>
    756             <ComponentRef Id="cp_VBoxWebService" />
    757 <?endif?>
    758             <ComponentRef Id="cp_VBoxCAPI" />
    759             <ComponentRef Id="cp_VBoxDrv" />
    760 
    761             <Feature Id="VBoxUSB" Title="VirtualBox USB Support" Level="1"
    762                      Description="!(loc.VB_USBDriver)"
     259                 Absent="allow" AllowAdvertise="no" >
     260            <MergeRef Id="msm_VBoxUSB" />
     261        </Feature>
     262
     263<?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
     264        <Feature Id="VBoxNetwork" Title="VirtualBox Networking" Level="1"
     265                 Description="!(loc.VB_Network)"
     266                 ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
     267                 Absent="allow" AllowAdvertise="no" >
     268            <Feature Id="VBoxNetworkFlt" Title="VirtualBox Bridged Networking" Level="1"
     269                     Description="!(loc.VB_NetFltDriver)"
    763270                     ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    764271                     Absent="allow" AllowAdvertise="no" >
    765                 <ComponentRef Id="cp_USBFilterDriver" />
    766                 <ComponentRef Id="cp_USBDeviceDriver" />
     272                <MergeRef Id="msm_VBoxNetworkFlt" />
    767273            </Feature>
    768 
    769 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
    770             <Feature Id="VBoxNetwork" Title="VirtualBox Networking" Level="1"
    771                      Description="!(loc.VB_Network)"
     274            <Feature Id="VBoxNetworkAdp" Title="VirtualBox Host-Only Networking" Level="1"
     275                     Description="!(loc.VB_NetAdpDriver)"
    772276                     ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    773277                     Absent="allow" AllowAdvertise="no" >
    774                 <Feature Id="VBoxNetworkFlt" Title="VirtualBox Bridged Networking" Level="1"
    775                          Description="!(loc.VB_NetFltDriver)"
    776                          ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    777                          Absent="allow" AllowAdvertise="no" >
    778                     <ComponentRef Id="cp_NetFltDriver" />
    779                 </Feature>
    780                 <Feature Id="VBoxNetworkAdp" Title="VirtualBox Host-Only Networking" Level="1"
    781                          Description="!(loc.VB_NetAdpDriver)"
    782                          ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    783                          Absent="allow" AllowAdvertise="no" >
    784                     <ComponentRef Id="cp_NetAdpDriver" />
    785                 </Feature>
     278                <MergeRef Id="msm_VBoxNetworkAdp" />
    786279            </Feature>
     280        </Feature>
    787281<?endif?>
    788282
    789283<?if $(env.VBOX_WITH_PYTHON) = "yes" ?>
    790             <Feature Id="VBoxPython" Title="VirtualBox Python 2.x Support" Level="1"
    791                     Description="!(loc.VB_Python)"
    792                     ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
    793                     Absent="allow" AllowAdvertise="no" >
    794                 <ComponentRef Id="cp_VBoxPythonBinding" />
    795             </Feature>
     284        <Feature Id="VBoxPython" Title="VirtualBox Python 2.x Support" Level="1"
     285                 Description="!(loc.VB_Python)"
     286                 ConfigurableDirectory="INSTALLDIR" TypicalDefault="install" Display="expand"
     287                 Absent="allow" AllowAdvertise="no" >
     288            <MergeRef Id="msm_VBoxPython" />
     289        </Feature>
    796290<?endif?>
    797 
    798         </Feature>
    799 
    800         <!-- Include user interface definition. -->
    801         <?include UserInterface.wxi ?>
    802 
    803         <InstallExecuteSequence>
    804 
    805             <!--
    806                 To debug the action sequences, do: "msiexec /i <VBox.msi> /lar <Logfile>"
    807 
    808                 InstallUISequence (client side) is:
    809                     AppSearch
    810                     LaunchConditions
    811                     ValidateProductID
    812                     CostInitialize
    813                     FileCost
    814                     CostFinalize
    815                     ExecuteAction -> will pass control over to "InstallExecuteSequence"
    816 
    817                 The first six actions above will be repeated but skipped on the server
    818                 side if already run on the client side.
    819 
    820                 InstallExecuteSequence (server side) is:
    821                     <First six action from InstallUISequence>
    822                     .
    823                     InstallInitialize
    824                     .
    825                     InstallFinalize
    826 
    827                 The actions between InstallInitialize and InstallFinalize will be gone through twice:
    828                 - The first time the installer creates an installation script containing all actions in the right
    829                   sequence which need to get executed in a batch later. At this point the launch conditions for
    830                   custom actions must be met already!
    831                 - The second time the generated installation script will be run as-is.
    832 
    833                 Also, the InstallUISequence and InstallExecuteSequence tables run in different sessions which
    834                 need public properties (that is, UPPERCASE properties).
    835             -->
    836 
    837             <!-- AppSearch must be done before "RemoveExistingProducts" and before "FindRelatedProducts". -->
    838             <AppSearch Sequence="1"></AppSearch>
    839             <LaunchConditions After="AppSearch" />
    840 
    841             <!-- First install the new version and then remove the old version. This is more efficient. -->
    842             <RemoveExistingProducts Before="InstallValidate" />
    843 
    844             <Custom Action="ca_OriginalTargetDir" After="FileCost"><![CDATA[(NOT INSTALLDIR) AND (NOT EXISTINGINSTALLDIR)]]></Custom>
    845             <Custom Action="ca_DefaultTargetDir" Before="FileCost" ><![CDATA[NOT Installed AND (NOT INSTALLDIR) AND EXISTINGINSTALLDIR]]></Custom>
    846 
    847             <Custom Action="ca_UninstallTAPInstances" Before="InstallFiles" >1</Custom>
    848 <?if $(env.VBOX_WITH_NETFLT) = "yes" ?>
    849             <!-- Create host-only interfaces on first-time install. -->
    850             <Custom Action="ca_CreateHostOnlyInterfaceArgs" Before="ca_CreateHostOnlyInterface" ><![CDATA[&VBoxNetworkAdp=3]]></Custom>
    851             <Custom Action="ca_CreateHostOnlyInterface" Before="InstallFinalize" ><![CDATA[&VBoxNetworkAdp=3]]></Custom>
    852             <!-- Don't remove the host-only interfaces on update, only on uninstall. -->
    853             <Custom Action="ca_RemoveHostOnlyInterfaces" After="ca_UninstallNetFlt" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
    854             <!-- First stop the existing host-only interfaces on update ... -->
    855             <Custom Action="ca_StopHostOnlyInterfaces" Before="ca_UpdateHostOnlyInterfaces" ><![CDATA[UPGRADINGPRODUCTCODE]]></Custom>
    856             <!-- ... then do the actual driver update. -->
    857             <Custom Action="ca_UpdateHostOnlyInterfacesArgs" Before="ca_UpdateHostOnlyInterfaces" ><![CDATA[Installed AND UPGRADINGPRODUCTCODE]]></Custom>
    858             <Custom Action="ca_UpdateHostOnlyInterfaces" Before="InstallFiles" ><![CDATA[Installed AND UPGRADINGPRODUCTCODE]]></Custom>
    859 
    860             <Custom Action="ca_RollbackInstallNetFltArgs" Before="ca_RollbackInstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
    861             <Custom Action="ca_RollbackInstallNetFlt" Before="ca_InstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
    862             <Custom Action="ca_InstallNetFltArgs" Before="ca_InstallNetFlt" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
    863             <Custom Action="ca_InstallNetFlt" Before="ca_CreateHostOnlyInterface" ><![CDATA[&VBoxNetworkFlt=3]]></Custom>
    864 
    865             <Custom Action="ca_RollbackUninstallNetFltArgs" Before="ca_RollbackUninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
    866             <Custom Action="ca_RollbackUninstallNetFlt" Before="ca_UninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
    867             <Custom Action="ca_UninstallNetFltArgs" Before="ca_UninstallNetFlt" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
    868             <Custom Action="ca_UninstallNetFlt" After="InstallInitialize" ><![CDATA[&VBoxNetworkFlt=2]]></Custom>
    869 <?endif?>
    870             <Custom Action="ca_InstallPythonAPIArgs" Before="ca_InstallPythonAPI" ><![CDATA[&VBoxPython=3]]></Custom>
    871             <Custom Action="ca_InstallPythonAPI" Before="InstallFinalize" ><![CDATA[&VBoxPython=3]]></Custom>
    872 
    873             <Custom Action="ca_InstallBrandingArgs" Before="ca_InstallBranding" ><![CDATA[NOT REMOVE]]></Custom>
    874             <Custom Action="ca_InstallBranding" Before="InstallFinalize" ><![CDATA[NOT REMOVE]]></Custom>
    875 
    876             <!-- Uninstall branding on complete uninstall, not on update. -->
    877             <Custom Action="ca_UninstallBrandingArgs" Before="ca_UninstallBranding" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
    878             <Custom Action="ca_UninstallBranding" Before="InstallFinalize" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
    879 
    880         </InstallExecuteSequence>
    881 
    882     </Product>
     291    </Feature>
     292
     293    <!-- Include user interface definition -->
     294    <?include UserInterface.wxi ?>
     295
     296    <InstallExecuteSequence>
     297
     298        <!--
     299            To debug the action sequences, do: "msiexec /i <VBox.msi> /lar <Logfile>"
     300
     301            InstallUISequence (client side) is:
     302                AppSearch
     303                LaunchConditions
     304                ValidateProductID
     305                CostInitialize
     306                FileCost
     307                CostFinalize
     308                ExecuteAction -> will pass control over to "InstallExecuteSequence"
     309
     310            The first six actions above will be repeated but skipped on the server
     311            side if already run on the client side.
     312
     313            InstallExecuteSequence (server side) is:
     314                <First six action from InstallUISequence>
     315                .
     316                InstallInitialize
     317                .
     318                InstallFinalize
     319
     320            The actions between InstallInitialize and InstallFinalize will be gone through twice:
     321            - The first time the installer creates an installation script containing all actions in the right
     322              sequence which need to get executed in a batch later. At this point the launch conditions for
     323              custom actions must be met already!
     324            - The second time the generated installation script will be run as-is.
     325
     326            Also, the InstallUISequence and InstallExecuteSequence tables run in different sessions which
     327            need public properties (that is, UPPERCASE properties).
     328        -->
     329
     330        <!-- AppSearch must be done before "RemoveExistingProducts" and before "FindRelatedProducts" -->
     331        <AppSearch Sequence="1"></AppSearch>
     332        <LaunchConditions Sequence="2" />
     333
     334        <!-- First install the new version and then remove the old version. This is more efficient -->
     335        <RemoveExistingProducts Sequence="3" />
     336        <InstallValidate Sequence="4" />
     337
     338        <Custom Action="ca_OriginalTargetDir" After="FileCost"><![CDATA[(NOT INSTALLDIR) AND (NOT EXISTINGINSTALLDIR)]]></Custom>
     339        <Custom Action="ca_DefaultTargetDir" Before="FileCost" ><![CDATA[NOT Installed AND (NOT INSTALLDIR) AND EXISTINGINSTALLDIR]]></Custom>
     340
     341        <Custom Action="ca_UninstallTAPInstances" Before="InstallFiles" >1</Custom>
     342
     343        <Custom Action="ca_InstallBrandingArgs" Before="ca_InstallBranding" ><![CDATA[NOT REMOVE]]></Custom>
     344        <Custom Action="ca_InstallBranding" Before="InstallFinalize" ><![CDATA[NOT REMOVE]]></Custom>
     345
     346        <!-- Uninstall branding on complete uninstall, not on update -->
     347        <Custom Action="ca_UninstallBrandingArgs" Before="ca_UninstallBranding" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
     348        <Custom Action="ca_UninstallBranding" Before="InstallFinalize" ><![CDATA[(NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]></Custom>
     349
     350    </InstallExecuteSequence>
     351
     352  </Product>
    883353</Wix>
    884 
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette