AeliusSaionji / chocopkgs

13 stars 24 forks source link

installation fails due to incorrect url #21

Closed sirinsidiator closed 4 years ago

sirinsidiator commented 5 years ago

Tried to install the package, but it fails with the following error: ERROR: The remote file either doesn't exist, is unauthorized, or is forbidden for url 'https://us.download.nvidia.com/Windows/419.35/419.35-desktop-win10-64bit-international-whql.exe'. Exception calling "GetResponse" with "0" argument(s): "The remote server returned an error: (404) Not Found." Seems the url should be https://us.download.nvidia.com/Windows/419.35/419.35-desktop-win10-64bit-international-whql-rp.exe instead.

AeliusSaionji commented 5 years ago

Yeah I hear about this basically every version of this package.

Someone should go yell at nvidia to stop releasing new versions without bumping the version number.

AeliusSaionji commented 5 years ago

My best guess is that the RP stands for repack- indicating that they slightly change some configuration but haven't changed the driver code.

I'll try to see if there's something I can do to programmatically detect when they've done this, but until then you should just update the chocolatey package shortly after I release it, before nvidia messes it up :)

sirinsidiator commented 5 years ago

Maybe you could let the setup just try both urls before failing? Would probably cover 99% of it.

AeliusSaionji commented 5 years ago

No, as the maintainer I am required to provide the checksum of any files before uploading to chocolatey. I can't do that if the file doesn't exist yet.

sirinsidiator commented 5 years ago

Ok. Didn't know that. After searching around a bit on how geforce experience determines if a new version is available, I found some PiHole users complaining about it not working until they whitelist gfwsl.geforce.com. Which lead me to this site which contains a few captured requests. I tinkered around a bit and the following URL returns the correct download URL for the most current driver: https://gfwsl.geforce.com/nvidia_web_services/controller.driverinstallercontent.php?com.nvidia.services.DriverInstallerContent.getCurrentHtmlDefault/{%22O%22:%22AMD64/10.0%22,%22P%22:{},%22D%22:{%22VEN_10DE&DEV_1B06%22:%22DISPLAY%22},%22K%22:{},%22L%22:{}}

<!-- methodcalled name='getCurrentHtmlDefault' date='Tuesday 19th March 2019 06:12:55 AM' {"O":"AMD64\/10.0","P":[],"D":{"VEN_10DE&DEV_1B06":"DISPLAY"},"K":[],"L":[]} ResponseStatus='Success 200' --><!--theDeviceId:1B06<br>theLanguageCode:1033<br>theOperatingSystemCode:10.0<br>theOperatingSystemIs64Bit:1<br>theChassis:<br>theCountryCode:<br>theIcafeFlag:<br>isCudaToolkitPackage:<br>hasQuadro:<br>hasTesla:<br>hasGeForce:1<br>MC:xlampgfecc03,xlampgfecc04,xlampgfecc05,xlampgfecc06,xlampgfecc07,xlampgfecc08,xlampgfecc09,xlampgfecc10:11211 --><!-- DownloadId:144363 Name:GeForce Game Ready Driver ParentDownloadId: Release:418 Version:419.3500 DetailsURL:http://www.nvidia.com/Download/driverResults.aspx/144363/en-us DownloadURL:http://us.download.nvidia.com/Windows/419.35/419.35-desktop-win10-64bit-international-whql-rp.exe BannerURL:https://www.nvidia.com/object/eve-std-gtx-1080ti-ultimate-rig-honor-fblive-mar17-banners.html IsBeta:0 DownloadType:1 IsBeta:0 IsWHQL:1 -->
<html><head><response action='open' url='https://www.nvidia.com/object/eve-std-gtx-1080ti-ultimate-rig-honor-fblive-mar17-banners.html?t=D:1B06L:1033O:10.0_1LC:' /></head></html>

Maybe you can use that to check when an update is pushed? "O":"AMD64\/10.0" seems to send the operating system and "D":{"VEN_10DE&DEV_1B06":"DISPLAY"} the device id (as shown in the system information in the nvidia control panel). You'll probably have to update them every now and then in order to still receive the most current information.

AeliusSaionji commented 5 years ago

I pushed an update that just checks for the existence of the url with -rp.

Probably fine? We'll see how this goes.

AeliusSaionji commented 5 years ago

Ugh I'm stupid. My solution produced an update every time the updater ran. Removing this...

sirinsidiator commented 5 years ago

Would it work if you only appended "-rp" or ".1" to the version instead of the date? The only other way I can think of is to compare the previous checksum to determine if there has been an update and increment a custom version suffix in that case.

AeliusSaionji commented 5 years ago

The thing I'm struggling with is now I need to also scrape the chocolatey package page to get this information, which I don't want to do.

AeliusSaionji commented 4 years ago

Seems like they stopped doing this, no one else has complained in a while? Let me know if it happens again.