microsoft / winget-pkgs

The Microsoft community Windows Package Manager manifest repository
MIT License
8.61k stars 4.47k forks source link

Nvidia Game Ready Drivers #18879

Open mariobrostech opened 3 years ago

mariobrostech commented 3 years ago

Package Requested

Manifests:

Desktop:

PackageIdentifier:   # publisher.package format (example: "Microsoft.WindowsTerminal")
PackageVersion:      1.0.11.0
PackageLocale:       International
Publisher:           Nvidia Corporation
PackageName:         Nvidia Game Ready Driver
License:             Proprietary
ShortDescription:    Game-ready graphics driver for Nvidia GeForce GPUs
Installers: 
 - Architecture:     x64
   InstallerType:    exe
   InstallerUrl:     https://us.download.nvidia.com/Windows/471.11/471.11-desktop-win10-64bit-international-dch-whql.exe
   InstallerSha256:  c81810bd968ba6efe0b1052301c242d081dfd843d91fc9e2e46cbce3fc527719
ManifestType: singleton
ManifestVersion: 1.0.0

Laptop:

PackageIdentifier:   # publisher.package format (example: "Microsoft.WindowsTerminal")
PackageVersion:      1.0.11.0
PackageLocale:       International
Publisher:           Nvidia Corporation
PackageName:         Nvidia Game Ready Driver
License:             Proprietary
ShortDescription:    Game-ready graphics driver for Nvidia GeForce GPUs
Installers: 
 - Architecture:     x64
   InstallerType:    exe
   InstallerUrl:     https://us.download.nvidia.com/Windows/471.11/471.11-notebook-win10-64bit-international-dch-whql.exe
   InstallerSha256:  c81810bd968ba6efe0b1052301c242d081dfd843d91fc9e2e46cbce3fc527719
ManifestType: singleton
ManifestVersion: 1.0.0

Notes:

Thanks in advance!

denelon commented 3 years ago

Does the package produce different results when installed in Add / Remove Programs?

I'm not sure why there are two URLS. It might just be for tracking purposes.

For "silent" switches, you can try using the Windows Package Manager Manifest Creator. I wouldn't necessarily "submit" the manifest because you might want more/better metadata, but you could use it to see if it can detect the installer type based on parsing the .exe.

lychichem commented 3 years ago

Does the package produce different results when installed in Add / Remove Programs?

I'm not sure why there are two URLS. It might just be for tracking purposes.

For "silent" switches, you can try using the Windows Package Manager Manifest Creator. I wouldn't necessarily "submit" the manifest because you might want more/better metadata, but you could use it to see if it can detect the installer type based on parsing the .exe.

The two packages are for different devices, one for notebook and the other is for PC. So the problem is can winget detect device.

mddtest commented 3 years ago

These should not be needed as in order for you to install Nvidia Drivers you NEED the Nvidia Experience installed any way for the drivers to be installed.

mariobrostech commented 3 years ago

@mddtest That's not true, please see the article here that shows the installation process without GeForce Experience.

mariobrostech commented 3 years ago

Does the package produce different results when installed in Add / Remove Programs? I'm not sure why there are two URLS. It might just be for tracking purposes. For "silent" switches, you can try using the Windows Package Manager Manifest Creator. I wouldn't necessarily "submit" the manifest because you might want more/better metadata, but you could use it to see if it can detect the installer type based on parsing the .exe.

The two packages are for different devices, one for notebook and the other is for PC. So the problem is can winget detect device.

@lychichem As I said initially, though, the file hashes are exactly the same, so unless there's an online component in the installer (which, for the record, I don't believe there is), this could just be for tracking purposes, as denelon suggested earlier. Regardless, I'll have to test the desktop drivers on my laptop at some point to prove this theory.

lychichem commented 3 years ago

Does the package produce different results when installed in Add / Remove Programs? I'm not sure why there are two URLS. It might just be for tracking purposes. For "silent" switches, you can try using the Windows Package Manager Manifest Creator. I wouldn't necessarily "submit" the manifest because you might want more/better metadata, but you could use it to see if it can detect the installer type based on parsing the .exe.

The two packages are for different devices, one for notebook and the other is for PC. So the problem is can winget detect device.

@lychichem As I said initially, though, the file hashes are exactly the same, so unless there's an online component in the installer (which, for the record, I don't believe there is), this could just be for tracking purposes, as denelon suggested earlier. Regardless, I'll have to test the desktop drivers on my laptop at some point to prove this theory.

I see. As far as I know, some driver packages include all the driver file for all devices and select the files to install base on certain .inf files (The .exe is actually a detector and an inf file selector). Maybe it's same for the Nvidia driver.

mariobrostech commented 3 years ago

Does the package produce different results when installed in Add / Remove Programs? I'm not sure why there are two URLS. It might just be for tracking purposes. For "silent" switches, you can try using the Windows Package Manager Manifest Creator. I wouldn't necessarily "submit" the manifest because you might want more/better metadata, but you could use it to see if it can detect the installer type based on parsing the .exe.

The two packages are for different devices, one for notebook and the other is for PC. So the problem is can winget detect device.

@lychichem As I said initially, though, the file hashes are exactly the same, so unless there's an online component in the installer (which, for the record, I don't believe there is), this could just be for tracking purposes, as denelon suggested earlier. Regardless, I'll have to test the desktop drivers on my laptop at some point to prove this theory.

I see. As far as I know, some driver packages include all the driver file for all devices and select the files to install base on certain .inf files (The .exe is actually a detector and an inf file selector). Maybe it's same for the Nvidia driver.

Yeah, this is definitely something I'll need to look into and test out some more. Thanks for your help, though!

ItzLevvie commented 3 years ago

I'm stuck here as it doesn't seem to run in unattended mode - all manifests must run in unattended mode without requiring the user's attention: image

Also, the validation pipelines are running on virtual machines, and to have NVIDIA drivers installed since there's a compatibility check in the installer, it would fail as there's no NVIDIA GPU attached in the VMs.

Related to https://github.com/microsoft/winget-pkgs/pull/10113#issuecomment-832827727: We've been discussing how we're going to deal with this class of scenarios. I don't think we anticipated needing custom hardware to validate packages. from @denelon

mariobrostech commented 3 years ago

I'm stuck here as it doesn't seem to run in unattended mode - all manifests must run in unattended mode without requiring the user's attention: image

Also, the validation pipelines are running on virtual machines, and to have NVIDIA drivers installed since there's a compatibility check in the installer, it would fail as there's no NVIDIA GPU attached in the VMs.

Related to #10113 (comment): We've been discussing how we're going to deal with this class of scenarios. I don't think we anticipated needing custom hardware to validate packages. from @denelon

Thanks for your help! I find it weird that the self-extracting package won't run unattended, though. Is the installer using a 7-Zip-like self-executing executable, or does this appear to be a more custom solution? I'm a novice when it comes to unattended installations, but I'm pretty sure 7-Zip executables can be executed automatically. If it's a custom solution, though, that would definitely throw a wrench into this situation... How could the GeForce Experience application run unattended while the standalone driver package couldn't? Maybe this is unrelated, so please correct me if this is the case, but I don't see why one tool would differ from the other in such a way. Again, thanks for your help, and I'm interested to hear your thoughts on this :)

lychichem commented 3 years ago

I'm stuck here as it doesn't seem to run in unattended mode - all manifests must run in unattended mode without requiring the user's attention:

image

Also, the validation pipelines are running on virtual machines, and to have NVIDIA drivers installed since there's a compatibility check in the installer, it would fail as there's no NVIDIA GPU attached in the VMs.

Related to #10113 (comment):

We've been discussing how we're going to deal with this class of scenarios. I don't think we anticipated needing custom hardware to validate packages. from @denelon

Thanks for your help! I find it weird that the self-extracting package won't run unattended, though. Is the installer using a 7-Zip-like self-executing executable, or does this appear to be a more custom solution? I'm a novice when it comes to unattended installations, but I'm pretty sure 7-Zip executables can be executed automatically. If it's a custom solution, though, that would definitely throw a wrench into this situation... How could the GeForce Experience application run unattended while the standalone driver package couldn't? Maybe this is unrelated, so please correct me if this is the case, but I don't see why one tool would differ from the other in such a way. Again, thanks for your help, and I'm interested to hear your thoughts on this :)

The installer of the driver is just a self-extract package. It extracts itself to a directory and run setup.exe. The GeForce experience installer is a program packaged using 7z format, it can automatically release to temp directory and run installer then remove temp directory. It can also accept parameters. So, the installers are different.

mariobrostech commented 3 years ago

@lychichem Got it, thanks for the explanation. So, is the consensus right now that this can't be done?

chausner commented 3 years ago

The way I understand https://nvidia.custhelp.com/app/answers/detail/a_id/2985/~/how-can-i-perform-a-silent-install-of-the-gpu-driver is that the initial unpacking step cannot be performed silently, unfortunately. Maybe winget could support it in the future if it adds support for extracting installers from ZIP/self-extracting files.

mariobrostech commented 3 years ago

@chausner Ok, that's understandable, and thanks for clarifying all of this for me.

@denelon What would you suggest doing from here? I can either close the issue outright, or you can tag it with Blocking-Issue. I'm fine with either, just let me know what you decide.

Thank you to everyone who participated in this thread for your help and clarification!

denelon commented 3 years ago

@mariobrostech I added "Blocking-Issue". I think keeping the issue open this way is a better way to avoid others having to go through all of the challenges with this one. Thank you for the effort and for your contributions!

WinkelCode commented 1 year ago

šŸ‘‹ Hey everyone, I just discovered that the Nvidia installer now supports full silent installs. I made a draft pull request here: https://github.com/microsoft/winget-pkgs/pull/110618

Testing this is obviously challenging since it relies on certain hardware. I also provided a list of things that I am unsure about. I would be very grateful for any help in this matter.

denelon commented 1 year ago

Does the install require the hardware to be present?

WinkelCode commented 1 year ago

Does the install require the hardware to be present?

Yes, unfortunately the installer will fail when it doesn't find a compatible GPU while installing. I guess there could be a command line argument to bypass that, but nothing stands out to me in that regard (there is a list in the PR comment).

microsoft-github-policy-service[bot] commented 1 year ago

Hello @mariobrostech,

This package appears to require specific hardware.

This package is blocked until support for specific hardware requirements is implemented in:

Be sure to add your šŸ‘ to the issue to help raise the priority and avoid posting "Me too!" messages to respect those who have subscribed to the issue.

Template: msftbot/blockingIssue/hardwareDependency

denelon commented 1 year ago

Do you know what error would be thrown by the installer if the hardware isn't present?

We should add that to an expected return code.