intel / haxm

Intel® Hardware Accelerated Execution Manager (Intel® HAXM)
BSD 3-Clause "New" or "Revised" License
3.22k stars 877 forks source link

Intel HAXM 7.5.6 does not provide .MSI #332

Open michell-la opened 3 years ago

michell-la commented 3 years ago

Describe the Bug

Summary: Previous editions of Intel HAXM used to extract a .MSI to %TEMP%\Intel. 7.6.5 seems to not do this anymore - this means that in Windows environments customers cannot deploy Intel HAXM via MSI using common management tools like AD GPO, SCCM or Intune - or any Windows end-point manager that remote deploys via .MSI

Specification HAXM version: 7.6.5 Hardware vendor: LENOVO_MT_81NE_BU_idea_FM_IdeaPad S540-15IWL Host OS version: Window 10 Pro N 2004 CPU Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz, 1992 Mhz, 4 Core(s), 8 Logical Processor(s) Host RAM size: 8GB Android Emulator 28.0.20

wcwang commented 3 years ago

Thanks for your feedback. As HAXM is just a kernel driver and only a service is needed to start for using. We simplified the installation process as QEMU and Android Studio did. We provide silent_install.bat for silent installation. Could you describe the details on how such tools deploy MSI based HAXM? What benefits did the MSI based installer have? Thanks.

michell-la commented 3 years ago

There are a number of benefits, not least that in the corporate/enterprize world .MSI have become a kind of internationally recognized "standard" for software deployment. So many management systems including ones not created by Microsoft leverage it as a deployment tool for mass deployments. The company I work for "Droplet Computing" leverage Intel HAXM to accelerate our container technology that runs on Windows, Apple Mac, Linux and Chromebook - and many of the organizations we work for in government and health care have kind of got used to/expect an .MSI...

Probably, the key value is that.MSIs can be deployed a computer-level in systems such as Microsoft Active Directory Group Policy objects, with a policy setting called "Software Installation". These policies systems (it's not limited to AD BTW) have a way of filtering the software deployment based on OU and/or group membership which means a large business can target software deployments on a per-computer or per-user basis. MSI also supports in-place upgrades, where the System Administrator is presented with a UI that allows them to say that version 7.5.1 is upgraded by 7.5.2. This process can feed into tools that carry out software audits, as the metadata present in the MSI can be ingested in software inventory tools - it allows customers to track how many active instances they have in production. That allows them to plan and test major OS upgrades by having a full trail of their estate. MSI continues to be in development and I understand that Microsoft has developed a hybrid version for more generic applications based on MSI-X. It also comes with own subset of command-line tools called "msiexec". It's a mature technology and has been around since Windows 2000.

MSI is often expected by these management tools, and work out of the box for MSI. I could go on - but a quick google provides this list of advantages of .MSI

https://www.itprotoday.com/cloud-computing/understanding-windows-installer

    • Using MSI packages simplifies the installation and un-installation processes.
    • Applications can be quickly installed on a range of systems in various locations. This saves on administration costs, simplifies license fee management, minimizes support and repair costs.
    • Modifies applications to save space on systems.
    • Can be made available for on-demand installations.
    • Simplifies application upgrades, repairs, recoveries, and revisions.
    • Allows clean installation and un-installation by utilizing the Roll-Back process.
    • Simplifies new user set-ups as well as updating existing user set-ups.
    • Eliminates uncontrolled software downloads and installations on a corporate network.
    • Ensures compatibility with already installed applications.
    • Automates the software distribution process.
    • Applications can be installed using a service built into the operating system of the system.

Hope this helps explain my query... I was just surprised to see that packages that were once there, have been removed...

Best Wishes Michelle

wcwang commented 3 years ago

Thanks for your detailed information. We have provided the silent_install.bat for remote deployment. You may try to run below commands after extracting the package,

silent_install.bat to install or upgrade HAXM silent_install.bat -u to uninstall HAXM, or silent_install.bat -h for more help.

Do you use QEMU as the virtual machine solution? How do you deploy QEMU, as QEMU also uses an .exe based installer rather than an .msi based one?

michell-la commented 3 years ago

Thanks for that - yep, I'm already aware of the silent_install.bat in the absence of an MSI I will direct organizations towards that...

We have built our own patent-pending client-side container solution, which hooks into the Intel HAXM APIs to make native Intel-VTx calls. We do that for the Windows 10 and Apple Mac version, on the Linux and Chromebook side of the house we leverage /dev/kvm to make the calls to Intel-VT there....

Our software ships as standard .exe installer, but we also build .MSI for the same reasons I outlined above 👍

Best Wishes michelle

wcwang commented 3 years ago

Glad to know that your software became another client that directly invokes HAXM APIs besides QEMU and Android Emulator. Since the original .msi installer is not suitable for the latest releases, we moved to the .exe installer solution since v7.6.5. Learnt that you have provided both installer packages, that should be a good idea. Thanks for your suggestion.

michell-la commented 3 years ago

:-)

Yup. We follow you guys very closely as your pretty critical to the performance of our container. On physical machines it's great - although sadly in virtualized environments we've had our challenges. Even though with a hypervisor like ESX or KVM you can exposure Intel-VT right up to the VM, and Intel HAXM installs just fine - the performance is nothing like being on bare metal with Windows 10 or Apple Mac... I've kind of assumed that was to do with the interplay of nesting or as I like to call "inception" :-D So you have bare-metal hypervisor (0), the VM (1) and then our container tech (2). I've been experimenting with WHPX as an alternative, but it seems no better...

Another challenge we have seen is customers on the LSTC channel for Windows 10 currently on version 1809. The LTSC edition creates quite long gap (nearly 3 years) on the Windows 10 code basis - in the most part Intel HAXM helps "bridge" that gap but not in all cases - I suspect its a combo of a "old" Windows 10 distro and really new CPU...?

Anyway, thanks very much for your advice and feedback - I'll update our deployment docs to recommend using the silent .cmd method going forward, unless in a later edition of Intel HAXM you decide to re-instate the .MSI approach...

Best Wishes Michelle

wayne-ma commented 3 years ago

Hi @michell-la ,great to know the haxm could be leveraged on your product. If possible, could you share us your using scenario or setup guides with container? Then we can make the haxm quality assurance from validation side and feature enabling from development side. Thanks in advance.

michell-la commented 3 years ago

That would be so cool! :-)

Perhaps we could get my development team together - and we could present our solutions - and provide you guys with our images, software and a partner NFR. I can see Wenchao is at an Intel... are you and he colleagues?

Perhaps best to hook up via linkedin for example - where I can more secure share contact details to arrange that?

This is my profile: https://www.linkedin.com/in/michellelaverick/

If you follow me, I'll exchange contact details and line things up...

Best Wishes Michelle

wayne-ma commented 3 years ago

That would be so cool! :-)

Perhaps we could get my development team together - and we could present our solutions - and provide you guys with our images, software and a partner NFR. I can see Wenchao is at an Intel... are you and he colleagues?

Perhaps best to hook up via linkedin for example - where I can more secure share contact details to arrange that?

This is my profile: https://www.linkedin.com/in/michellelaverick/

If you follow me, I'll exchange contact details and line things up...

Best Wishes Michelle

Yes, we are colleagues:). Looking forward to meeting with your team, maybe someday next week.

michell-la commented 3 years ago

Great... sent you a LinkedIn message to share my biz email...

What TZ are you in... I’m gmt but, our chief developement officer is German National currently in Mexico...

gsmitheidw commented 3 years ago

I'd like to add to this too, we have HAXM deployed to ~250 student devices for use with Android Studio for some years. Normally we would deploy using an internally created and self hosted Chocolatey NuGet "nupkg" (https://www.chocolatey.org).

Our previous packages installed using the msi and some silent switches in powershell using chocolatey's msi helper: silentArgs = "/qn /norestart /l*v "$($env:TEMP)\$($packageName).$($env:chocolateyPackageVersion).MsiInstall.log""

Chocolatey doesn't have anything in particular for handling batch files - it's all powershell driven. Batch files are fairly archaic, I'll probably be able to make it work with custom powershell scripting but it's clunky.

"Running haxm-7.7.0-setup.exe /?" doesn't provide any switches either - HAXM isn't really following any normal industry standards at all with any of this.

wcwang commented 3 years ago

Thanks for your feedback. Could you try below command in an elevated PowerShell for silent installation after extracting HAXM release package?

silent_install.bat

gsmitheidw commented 3 years ago

Yes that works but also .\haxm-7.7.0-setup.exe with a /S which works, I'll use that instead I think for the install. Notably the /S is case sensitive, must be upper case - very odd in a windows environment!

Perhaps this could be added to documentation in the wiki.

gsmitheidw commented 3 years ago

Annoying Github doesn't allow pull requests to wiki sections, but I suggest this markdown as a starting point under the Windows installer section.

### Installing HAXM silently on Windows ###

The installer executable will accept a silent /S switch on the cmd prompt or in powershell terminal, for example:
.\haxm-7.7.0-setup.exe /S
Please note the /S **must** be uppercase. 

Further silent operations are currently possible via a supplied batch file:

>Usage: silent_install.bat [-u|-v|-h] [-log file_path]
>
>silent_install.bat installs or uninstalls Intel HAXM in silent mode.
>This batch file is required to run as administrator.
>
>  The default action is to install Intel HAXM on your computer.
>  -u        uninstall Intel HAXM from your computer
>  -v        print installed HAXM version
>  -log      save log information to the specified file
>  -h        show help information
gsmitheidw commented 3 years ago

I've created a chocolatey.org package in the community repo, it's in the moderation queue now but hopefully will aid others doing larger deployments:

https://community.chocolatey.org/packages/haxm/7.7.0

Source: https://github.com/gsmitheidw/haxm

wcwang commented 3 years ago

Thanks for your help. The content of silent installation on Windows has been updated in the wiki page.