Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

Downloads:

133

Downloads of v 2.2.2:

16

Last Update:

14 Sep 2024

Package Maintainer(s):

Software Author(s):

  • Deco

Tags:

dlss nvidia gaming update-tool

DLSS Updater

Downloads:

133

Downloads of v 2.2.2:

16

Maintainer(s):

Software Author(s):

  • Deco

DLSS Updater

Legal Disclaimer: Neither this package nor Chocolatey Software, Inc. are affiliated with or endorsed by Deco. The inclusion of Deco trademark(s), if any, upon this webpage is solely to identify Deco goods or services and not for commercial purposes.

  • 1
  • 2
  • 3

Some Checks Have Failed or Are Not Yet Complete

Not All Tests Have Passed


Validation Testing Passed


Verification Testing Passed

Details

Scan Testing Resulted in Flagged as a Warning:

At least one file within this package has between 5 and 10 detections

Details
WARNING

There are versions of this package awaiting moderation . See the Version History section below.

WARNING

This package was rejected on 26 Sep 2024. The reviewer gep13 has listed the following reason(s):

DecoUK (maintainer) on 14 Sep 2024 01:38:00 +00:00:

User 'DecoUK' (maintainer) submitted package.

chocolatey-ops (reviewer) on 14 Sep 2024 02:11:07 +00:00:

dlss-updater has failed automated validation.

Requirements

Requirements represent the minimum quality of a package that is acceptable. When a package version has failed requirements, the package version requires fixing and/or response by the maintainer. Provided a Requirement has flagged correctly, it must be fixed before the package version can be approved. The exact same version should be uploaded during moderation review.

  • Binary files (.exe, .msi, .zip) have been included without including a VERIFICATION.txt file. This file is required when including binaries More...
Guidelines

Guidelines are strong suggestions that improve the quality of a package version. These are considered something to fix for next time to increase the quality of the package. Over time Guidelines can become Requirements. A package version can be approved without addressing Guideline comments but will reduce the quality of the package.

  • The iconUrl should be added if there is one. Please correct this in the nuspec, if applicable. More...
  • The nuspec has been enhanced to allow packageSourceUrl, pointing to the url where the package source resides. This is a strong guideline because it simplifies collaboration. Please add it to the nuspec. More...
  • Release Notes (releaseNotes) are a short description of changes in each version of a package. Please include releasenotes in the nuspec. NOTE: To prevent the need to continually update this field, providing a URL to an external list of Release Notes is perfectly acceptable. More...
  • Summary (summary) is a short explanation of the software. Please include summary in the nuspec. More...
Suggestions

Suggestions are either newly introduced items that will later become Guidelines or items that are don't carry enough weight to become a Guideline. Either way they should be considered. A package version can be approved without addressing Suggestion comments.

  • The nuspec has been enhanced to allow more information related to the software. More... Please consider adding one or more of the following to the nuspec, if available:
    • docsUrl - points to the location of the wiki or docs of the software
    • mailingListUrl - points to the forum or email list group for the software
    • bugTrackerUrl - points to the location where issues and tickets can be accessed
    • projectSourceUrl - points to the location of the underlying software source
Notes

Notes typically flag things for both you and the reviewer to go over. Sometimes this is the use of things that may or may not be necessary given the constraints of what you are trying to do and/or are harder for automation to flag for other reasons. Items found in Notes might be Requirements depending on the context. A package version can be approved without addressing Note comments.

  • The package maintainer field (owners) matches the software author field (authors) in the nuspec. The reviewer will ensure that the package maintainer is also the software author. More...
  • Binary files (.exe, .msi, .zip) have been included. The reviewer will ensure the maintainers have distribution rights. More...

DecoUK (maintainer) on 14 Sep 2024 02:40:19 +00:00:

User 'DecoUK' (maintainer) submitted package.

chocolatey-ops (reviewer) on 14 Sep 2024 03:12:02 +00:00:

dlss-updater has passed automated validation. It may have or may still fail other checks like testing (verification).
NOTE: No required changes that the validator checks have been flagged! It is appreciated if you fix other items, but only Requirements will hold up a package version from approval. A human review could still turn up issues a computer may not easily find.

Guidelines

Guidelines are strong suggestions that improve the quality of a package version. These are considered something to fix for next time to increase the quality of the package. Over time Guidelines can become Requirements. A package version can be approved without addressing Guideline comments but will reduce the quality of the package.

  • The iconUrl should be added if there is one. Please correct this in the nuspec, if applicable. More...
Suggestions

Suggestions are either newly introduced items that will later become Guidelines or items that are don't carry enough weight to become a Guideline. Either way they should be considered. A package version can be approved without addressing Suggestion comments.

  • The nuspec has been enhanced to allow more information related to the software. More... Please consider adding one or more of the following to the nuspec, if available:
    • docsUrl - points to the location of the wiki or docs of the software
    • mailingListUrl - points to the forum or email list group for the software
    • bugTrackerUrl - points to the location where issues and tickets can be accessed
    • projectSourceUrl - points to the location of the underlying software source
Notes

Notes typically flag things for both you and the reviewer to go over. Sometimes this is the use of things that may or may not be necessary given the constraints of what you are trying to do and/or are harder for automation to flag for other reasons. Items found in Notes might be Requirements depending on the context. A package version can be approved without addressing Note comments.

  • The package maintainer field (owners) matches the software author field (authors) in the nuspec. The reviewer will ensure that the package maintainer is also the software author. More...
  • Binary files (.exe, .msi, .zip) have been included. The reviewer will ensure the maintainers have distribution rights. More...

chocolatey-ops (reviewer) on 14 Sep 2024 03:23:04 +00:00:

dlss-updater has passed automated package testing (verification). The next step in the process is package scanning.
Please visit https://gist.github.com/choco-bot/002d0419ac2c0f83b339291e412a71cf for details.
This is an FYI only. There is no action you need to take.

chocolatey-ops (reviewer) on 14 Sep 2024 03:36:40 +00:00:

dlss-updater has been flagged as part of automated virus scanning.
Package virus scanning found that at least 1 file within, or downloaded by, the package has between 6 and 10 VirusTotal detections associated with it.
This package version cannot be approved without an exemption from a Moderator.

DecoUK (maintainer) on 14 Sep 2024 17:47:42 +00:00:

Note: This is due to the use of Pyinstaller and it not being signed, there is no malware in the package.

gep13 (reviewer) on 21 Sep 2024 18:28:14 +00:00:

I am not familiar with this tool, so please excuse a potentially naive question, but are the files in this package essentially what is included in this zip file:

https://github.com/Recol/DLSS-Updater/releases/download/V2.2.2/DLSS.Updater.2.2.2.zip

If so, would it not be "cleaner" to simply embed or download the zip file, rather than put all the individual files into the Chocolatey nupkg file?

Also, regarding this:

> Note: This is due to the use of Pyinstaller and it not being signed, there is no malware in the package

Is there a resource that you can point to where this is discussed? If so, it would be great to have this included in the package description.

DecoUK (maintainer) on 24 Sep 2024 17:22:04 +00:00:

@gep13 That technique isn't possible (embedding/downloading), as Pyinstaller is used here for compiling the binary with Github Actions, the binary has to recompiled into the nukpg file with this script here: https://github.com/Recol/DLSS-Updater/blob/main/tools/chocolateyInstall.ps1 to extract associated metadata information (version etc), for the nuspec file.

In theory, it's possible, but it ends up less "clean" with the build process, in the inverse, and as i do not manually maintain it, would complicate things compared to this approach.

2: Certainly, this is a common issue with Pyinstaller specifically, discussion of it is available here: https://github.com/pyinstaller/pyinstaller/issues/6754#issuecomment-1100821249

Appreciate the suggestion with the description, i'm currently getting a 403 forbidden error due to the pending submission, so i will update the package description with this (on the next build).

gep13 (reviewer) on 25 Sep 2024 12:07:58 +00:00:

You should be able to push the same package version again, with the change to the description.

Or, are you saying that you can't do that, as you are already trying to push a new package version?

If the latter is the case, then we could reject this package version, which would allow you to push the new one.

DecoUK (maintainer) on 25 Sep 2024 14:58:47 +00:00:

@gep13 Correct it'd be under the second option, if you could reject the package version i can resubmit the new version with the updated description thanks.

gep13 (reviewer) on 26 Sep 2024 02:44:06 +00:00:

Rejecting package as per maintainer request.
Status Change - Changed status of package from 'submitted' to 'rejected'.

Description

DLSS Updater is a utility that automatically updates DLSS (Deep Learning Super Sampling) DLLs for games across multiple platforms including Steam, EA Play, Ubisoft, Epic Games, GOG, and Battle.net. It simplifies the process of keeping your games up-to-date with the latest DLSS improvements.


tools\DLSS_Updater.exe
md5: 0393175720032F33DB797B878E43BE40 | sha1: 38D27C0E0068E0B7E306D1AD1432B21F31D157CE | sha256: BC3054A06E527E5E19454056EA205CC010FF1A8E71EDB174F8FB191752A574E6 | sha512: DE33941147C25C9E30326E45517F95E66AE65836B01298C3C59DC89056FE8FF8BFD5B65D8ACE5D0DEC43157EE361F8C6E6A9A4082074F6DB47C7ACA19F32681D
tools\VERIFICATION.TXT
VERIFICATION
Verification is intended to assist the Chocolatey moderators and community
in verifying that this package's contents are trustworthy.

This package is published by the DLSS Updater Project itself. The binaries are 
identical to those published in the GitHub releases section.

Project URL: https://github.com/Recol/DLSS-Updater
Releases: https://github.com/Recol/DLSS-Updater/releases

To verify the binaries:

1. Download the official release from the GitHub releases page
2. Generate a checksum using Get-FileHash in PowerShell
   Get-FileHash DLSS_Updater.exe -Algorithm SHA256
3. Compare the checksum with the one provided in the release notes or in this file

Alternatively, you can use the verification methods provided by GitHub to ensure
the release you're downloading matches the source code at the tagged commit.

Note: This file will be updated with each release to include the specific
checksum for the current version. Always refer to the VERIFICATION.txt
included in the package for the most up-to-date verification information.

Checksum (SHA256) for DLSS_Updater.exe: BC3054A06E527E5E19454056EA205CC010FF1A8E71EDB174F8FB191752A574E6
tools\_internal\api-ms-win-core-console-l1-1-0.dll
md5: 6746E9CBC897101FD8CA22E42490614F | sha1: 3D732B58411EB6F4AD624BC9C7C5243315466ED3 | sha256: 81310FD7AAF3A8A280E6EFDDECD5A682C871FC6F5595A3BA131C9E60B58C80E1 | sha512: 2D9E059C9F924030D119E42DE65E7488DFB87459D732391C674448E63E3A10B75B0886E0EEDFDCAB86DBB14C987CF6D1A0D276A9BC7571FCB0CFD8FF0C9157D5
tools\_internal\api-ms-win-core-datetime-l1-1-0.dll
md5: 50CCEC6AA3033C421EC34A17625BDC08 | sha1: ABCE26F3702E8F3D833F2E35ADC8BC42D95354D6 | sha256: 0D9125CC84892EF961F33F316139E027095E325D540A98D5CD8099633D31B368 | sha512: 633CA161419F6DD990750A6F674A7CC8436B43C1C5EE02699BB0935EE030434F76A773DFE8F1C9B01E15C507BA8F1DE4768A1829C239A34BFEDEE2B5226FBAF2
tools\_internal\api-ms-win-core-debug-l1-1-0.dll
md5: AE0F85A63ADA456EEAF94B846FE8BD26 | sha1: 621625B9913B257EB8FA39AA0637ADB6737394FE | sha256: 305CE445FA2E3BBD9ACA3F1A31CA8C805DAEC293CC79BCD20B39EA5AE5B9989D | sha512: 059D8DE197387C761F2EA0066892E47722FC56FD274E4EFF181E1192223D0C6BA8230B4D5F656CFEC426DBD715C0E0ACBEF91681C462B2BE6928F56EA7AAA267
tools\_internal\api-ms-win-core-errorhandling-l1-1-0.dll
md5: 4FC7B688F541C78DF18402F7E3256929 | sha1: B431CECC0DD87EF4B4D3154B3ED6FF3B5C2EB0CD | sha256: 6E6C39C29890949D9857190C608BA8E4A195B8DC656D8616322E27A9D268FA49 | sha512: 3D082B60AF05566B9BC0135DBC5B9A9CCD9BA0AAC07522A63EF15739F83B5B43F0C432274B15C29E00D4CD18E85D6C1673F7BFD872F57319C7B490DB3ED69FDB
tools\_internal\api-ms-win-core-file-l1-1-0.dll
md5: CA2C182A0D46F7F614CBB61D3E9555C5 | sha1: 04713C5FF488E17C151BFCA1C540C495783C6E4A | sha256: 34B41B7160BF5FE3D46B95F51399DE8666C5AB32B064E7D57D7771FD51AA0CE2 | sha512: 7B1A994B8681921D308E8EBB62F47E705807C4EAEB7B6B25517B633B4BB324865A0987D4F4F3E8C166973AD5C8D8DCE8EC83AAFE20DE8194C0AD8A64565B703F
tools\_internal\api-ms-win-core-file-l1-2-0.dll
md5: 4E7B40F3C457212792ED796D5CEB7C0F | sha1: DEDB78BBCC0AE5E5AB1CB15EEC15E4F3300BC32E | sha256: 11F046A0BD6EA6BBAE9355E7B3F6CA42ADAE2A5C7F41F30FCB497BAEC80D69AD | sha512: 3F8FD4171D48CF8F9A37FAD1B42D79BB9B8CF8C08D0E594AEBC6425C1B5D981DB542A4A57BF71D5FD936641755C1C8548BC77EAD99AFF142DA0DA10E03B1C135
tools\_internal\api-ms-win-core-file-l2-1-0.dll
md5: 80AB22C6D0250257B61B217822AA5D7C | sha1: E659198C8045D918384E276783507D77CE297CD6 | sha256: D56B63AEFEDC21372A5D75918032E98F3E4C564733D4838A5B442351E32A300B | sha512: 94E61803A318FDE919BA18A20CBDFAE1250A844C2266311BC99CFCBB22757BD43B5279567F24BAE32192DC0B9FBB0B20D10DB3B3F19014708AF7E8F89A1C96A4
tools\_internal\api-ms-win-core-handle-l1-1-0.dll
md5: 71CDF92988835DA9A691482A6F06174F | sha1: 16F12BB281540A0DE6C95120FC51DD0A068E28DD | sha256: 797F05FB447CDBA1078ACB66CB7BDE7C908F0EFBA0BC3FD4A54B4DAEBFFAF84B | sha512: 1987FBF26559E59894DE2289792577B857F320809AB1720E799933528A8D082240556F63D2F4C16907B45F6DA10A7E04DAC8BB953F036F0EBE822C7D13B1BB8C
tools\_internal\api-ms-win-core-heap-l1-1-0.dll
md5: E58BAF7E437354716BE8BFF0495F9BFE | sha1: E873E3D8D422F62CABE7040517E561E31862278C | sha256: 6DEE9C5652E2858FBFDD50C5175127108D227B7E90F575B2E6C33F1C8F5A0976 | sha512: 2B7F122B48DBC7304118653E371ED99B45B203251A6DCA2387311C4C70562121132BF2E00FA8D1B953583F2CA878602C2A1625F3BF3782112FD2619BA1FF25F8
tools\_internal\api-ms-win-core-interlocked-l1-1-0.dll
md5: CEDB4D3397A2C134FEC77753F880D025 | sha1: 173F8841D20EF214C197EB4BAB0A0D1E0CB6BEBD | sha256: 433B60EA4523C5733DA468703D14AB8DCCE42EF5F2417F9CDE2FEA3D3C3C977C | sha512: 6DF040FAA43172F14E65D1A2311D5AB66CEE250E12596E901A2D7CD8144A3738E8E486545AD760A254ED278F4D35F68E1DCEFAF77BF581858B2070768D1BC18D
tools\_internal\api-ms-win-core-libraryloader-l1-1-0.dll
md5: 650ECBE45BE7506075F93351BB0389F5 | sha1: 4C33717C81500C72D4D7E9963B3C9043B8441A3F | sha256: 406E80902211D987EF0260D9DB08821460E0702E90AE47165A727E0CA6B7C325 | sha512: 63696D75015F2ED5C04883111AEAE7EB594FF9FBC83F9B9399CCFD8186B9A5C52E4656005EF2C540091F82F7687745A209DA79D12AA944A1D12B64547C31F342
tools\_internal\api-ms-win-core-localization-l1-2-0.dll
md5: 7859EB82F99FA849AD33909CDAE8D493 | sha1: B56512906E9642A99DCB7EB7373FA8AD5990019E | sha256: 7C7A3C0D04519D1656A50604B1052850E9D937B6C3E973D564A6B2F9495AE05F | sha512: A6548D6D70E8C22638D0619B4EAAFEAD5289953C013D2E95477FB34316B788CD756217426DD36582B49BA5FD93702C4EC4590CABBE47D79156516FFF5FCDB149
tools\_internal\api-ms-win-core-memory-l1-1-0.dll
md5: 273FDAA82AFAE0337F7F04FF9936AFA3 | sha1: DD0EF3117BE0D59EE13051346708B3008B1149C6 | sha256: 9BECF626CCABBCFC9A7B779026644606EC565B08CC9B85D3AF09AB5189E8C6F9 | sha512: B19B2998BB197B741D878F0A25E75ABEA0F05033F20B17003BF8EED983CA35A90918FC4BB399D6C7150C8BE8CB5A428E4F2FE804F1AAE5A32F0A363604BC1FD7
tools\_internal\api-ms-win-core-namedpipe-l1-1-0.dll
md5: BBEE8D15501D1FE036FDAC6C032C4380 | sha1: A8BE3AB44D754498405FFABD39F77FC829BAD3C6 | sha256: C26AAE1FE2C56EB26ED1AF5BB7CCA7CEA762E126F4C2E06B6AB39D75A8CB4482 | sha512: 9851D4BC159A5B21E281C591C001245CED0455ADF2C419977490546CBF452D405A34152A2DF645A344AA50F45C2CAFF383E43A75E062C3478ABA713868FBE2D1
tools\_internal\api-ms-win-core-processenvironment-l1-1-0.dll
md5: 9DD8CC2363DB5F39EA3B6FC28DBB5695 | sha1: 33C49373C772C0C7EC71983158213569CF572EE2 | sha256: 173BBF24F7420DB3D1E53E45DD0179B9B152BC6D08F3D46EB9D47A833A46CB0A | sha512: 946D4ACDE2773332405E1C4C0BF427F0CBDE4EE42E72ACAC7039A482A62DD99F033C526428F42B63A2ACA5DB1EEA0E6B45063D1E2DE044EE8201AB829D884523
tools\_internal\api-ms-win-core-processthreads-l1-1-0.dll
md5: B6EF15E2CFF6A7DE8DB778DA9E845C55 | sha1: 8062E8B2A02F9E0AD346BCC5ED8263FD61F17B4B | sha256: C1ED94EADE0309C4C4F0854F5A972BF76D55393857E45C770E217A996103AA62 | sha512: 50A8267AAB8819EAC91E81BDCAD64585B926DAD0B41DB46677B2214E68E3046BBA0A9AF33EB86C310E9BB2C8B4A04A12C6A70A772540072C7FC815A293A00C3E
tools\_internal\api-ms-win-core-processthreads-l1-1-1.dll
md5: 54D6888E154D8FD2B35C7A7B8DCAA84B | sha1: 883CCA38FF0D43AB86B344EC7A490515F594A060 | sha256: 9E2744BC1F7FA7015881C5EDC7F14B031472CA1A08C57C38325CBF7736890BE0 | sha512: 0B2F048B2B5F1083D8E65DDB3278A4340EAB05E41D9A08B4337F4CDF6B5AFE540CDA6C3B87462A2DE3BB9FF2FC2AB6D95631913C6E1E02335A42812D7EF681DD
tools\_internal\api-ms-win-core-profile-l1-1-0.dll
md5: 93AD9B6D88B931D7C1672AE0AF2D9DAC | sha1: 8AA5583B42555A8706FD05B2211C1B6CD1C51C2B | sha256: 5EF9CD62CF2A2B0CB068126D9C680016C9E1F3B738A284325B9796C86AF06594 | sha512: B04D553A719388347409047756DB2ECBE58B2F4E08FA5BB4544725C1342C7E795267AB6493FCA1A850EECAEB9C7A1779F874CE0367DCEFA1AB1CB79B14CD7B45
tools\_internal\api-ms-win-core-rtlsupport-l1-1-0.dll
md5: 93A2EA4844B8E80C1CFF746C295553C7 | sha1: BD29D940B9C70AD7FD3B8645CA6D450C3392830A | sha256: A50682FDD5A5AE9CEB02C7B9CAFFDCE10E3B38178EBE3E74B6323627FC6D3A89 | sha512: 0B95784543BF554D375C84721103F5A84AECC22D6D712DF9713D6BD247258E5D6349A2BA9D92C7543D1303C91CFAF99D6D4F609B717DB3BCD35F393A10D57D5E
tools\_internal\api-ms-win-core-string-l1-1-0.dll
md5: 8E1B04D0E6FF7A3FC381F7306D6CF243 | sha1: A0A2794DA5BFD59E7A7DB03DD21ABA9F10613623 | sha256: B4C44D1EE830C37AE96B90B0A119B4E137862F45314454A23B81FD3A2399A635 | sha512: 1C45E2B37B9B648227B1AF4D739E5D4F1979FA8796651A53D01D0A1CB871665115DED270B74E2ABD9600A1C6157CFB0999C7958E69D188D9A420599D015BFB3D
tools\_internal\api-ms-win-core-synch-l1-1-0.dll
md5: 0BD7734587B455B3B0FE4FF1342D38A5 | sha1: DBAFBBA73D821A395C97281741ED8ECBDFD9711D | sha256: 3F554614ABA0BF193D101495B88FB5E3E6ABC8E8C1F45DCC8053265FBC6B0A8C | sha512: 24F58E431A3660D94D7B2180DCD218C787F2B7FCE4285E933C5191A7397DED002459487552B360DCE5B8E61F2B70184A9BBDC6F5AFE2767E6876F49F31F14451
tools\_internal\api-ms-win-core-synch-l1-2-0.dll
md5: C959FF1B1B733ABD45125D6392A4F0FC | sha1: 3CE203F1E864E313AE0025ACF776429A7D440150 | sha256: 0C764D9856BBEDD7EA95E3427790FDB0C3C270C1A97FA3E0D085D77BD684537D | sha512: B71F6A4130EBB122506ECBD86EA5DDB73AB5BD6C6BAC0CAAB9FFF2E908B998A0CF8E45A95AF14060186E114701141980192AD506A1365EAAA8364F6E649D0E88
tools\_internal\api-ms-win-core-sysinfo-l1-1-0.dll
md5: 6C97C8A4E1231863A6F2638BF44FBE53 | sha1: 265E0B59A4FF5B7011D477F9172925B008BE728C | sha256: DAD6738302EFA9875F8C929C6C375CF15942A2CD6205B42166CDE543F59697FD | sha512: F957695F43212057905E4898C8D77BF82219BD33DE3877D337625F5064B794F1DD6D507A7AB167D6B73E6531F9E839BC4148E0C433B396ABEB827167448A6F1F
tools\_internal\api-ms-win-core-timezone-l1-1-0.dll
md5: 9EC9658795A82A6F689DBBF9B14D56A8 | sha1: 90498E0259EC68959E0CA9B7DFB6E94F24A192E5 | sha256: E25A1056BEEF787A1857541714D3CED677BC29257DDB70643A3F332D7081E24B | sha512: DDAB3D638F6B685ECF438870B3B6F1D7DD56319ED4748CBCA20D54863970CE1E4E5EDAC4B7DF5B63712FA63B1214F9477360F6F1DC7EC28FEB807D3A3EB6457A
tools\_internal\api-ms-win-core-util-l1-1-0.dll
md5: DED095A3EA12E19E8FA06B400F4DA71C | sha1: C0537BE41395DC58C2050527A1302BCCA385C819 | sha256: FCBC8A6D4FCFDA1DF56188C7415874AC6E163AA5669DA8B4DC5817411C7499B0 | sha512: 5E27DB0972DB7EC821DB1000D7293BBAD4C9253AEAEC37114BE767625F32102BDC98476B0E819C2598DBE9F67E54CDB6D67A2046971467FEBBA93E447F62B338
tools\_internal\api-ms-win-crt-conio-l1-1-0.dll
md5: 0B61C5AAF5794C40643856D3F84FD107 | sha1: 88CD05A9D2C4AD3F928793E3D5479CF84EEA088A | sha256: 8EB4AD287946765485AE35CA7FABB29844293412B01678D7C29D53688DB80499 | sha512: 78B22375796848E78F39495619DFB5A91DA28F95B0A931EFFA7971265ED95663894EC55A8C2B249A326D9605D053C7C0ABDD65F7D9A271FC803AC2FE2695411A
tools\_internal\api-ms-win-crt-convert-l1-1-0.dll
md5: E813F085BB974077FD1FF02F859C19FF | sha1: BDCA1E7CA980373CFE93E2C07EAE4E5F14FA92F8 | sha256: 9818A2278CE39E0ECFFA9BD2502FED106F9F2C6ACAF801FB7D7DF80606ABC2AB | sha512: B3B4B0E749DD04E698A26A82E2DAA21E91D50896A648310253D69FEB33585FD91E9C54698E33E8B9843642C865123E60A1CFAF3F2AF46827AFD38CD87A1B3E85
tools\_internal\api-ms-win-crt-environment-l1-1-0.dll
md5: 61D0F3D97C1A7AF5314C39C80C838796 | sha1: 06F7971574F67F34F61FF1A9A54B60221070D04B | sha256: 0BFCA5C3F717D1373E3FAF94DD3D010A6976AE2D57CB35A197C5BBAC80724B10 | sha512: 9651F768C448FBB878B7600CBD80C001B7D7EA7DBEC04B4EC50A637939787591A484AAFD7EA5C2E0C77447229970B3BF1B6175E552A9F2A1024272895ED04A75
tools\_internal\api-ms-win-crt-filesystem-l1-1-0.dll
md5: EF655E2DF6AA03C6AA11679E1601CBD1 | sha1: 435082A01784BE95F473095E4F0499F5C8C1E6B1 | sha256: 8EC445F97325160B291CA8046C1CBA997067E42E4095F724BDA9B43AE13BFED7 | sha512: 3A1EF8C4BFE553DE57D59DC2C2009E65E69A8DCA914D8D2396495B888BE0859E78508E4000A39A482C7116FADFE1B8D143B9AAA2C97785A0954AFD8B8B81A23F
tools\_internal\api-ms-win-crt-heap-l1-1-0.dll
md5: 6A32B4A457BC7EB515ED59DBA1114897 | sha1: 7A69AF1660D76285183754C7D1B29D81968D3960 | sha256: DA3FCC1283339DDD4504E48A63F75E4F8AC8F30CE48384E7C643B80B372BFCD6 | sha512: 7C5968F24940E35EAE221F6B17B44AEF51F751D685D74E79AA247D5DFD95D8A8D3DA3F7CE95A2C15764C5005BE05FEC22EC7A7C61617444ACEA353BF7931D19A
tools\_internal\api-ms-win-crt-locale-l1-1-0.dll
md5: 3089ADC12784121CDBA1E6B550EFD6C9 | sha1: EAA9B3760D7B25590CEA4564D5DC81C86442D336 | sha256: 25420D595989C800FE5F274AEBF32E74F2E670E1D08BC5336ED67DE9E1B1D62C | sha512: 62D8C2F07C8670E5135B8F092B533272C87E38191CEEFE03C2E6E707FA71997A68B4E00D68020AA2CF3EF6E4DE1D6C7A48F1EADCD409BF6C3889F635A1F89696
tools\_internal\api-ms-win-crt-math-l1-1-0.dll
md5: 8B0FE0EB8A838EA1524B9244679136ED | sha1: A32B845DB57F66845E9D5F428A871EECC8900E57 | sha256: 8324E803620D6C7A57D644EFB951B5B811D258F85195F71404198456D6A20DA6 | sha512: A1861B8098855C1833E1E080DF325AE1078EBB8918D658C7379F24F982560AB420D858BE6C19353A79CBAC6A4378BC23E7636F7FB7D517121CD82D924E8DCFC2
tools\_internal\api-ms-win-crt-process-l1-1-0.dll
md5: 1B686CE09C3D5B958B29065520A90C6F | sha1: DDA2B3316F1F2C557B09FE0B8557785DD8BE847C | sha256: 201B8ED6E586AFB1AE44CA4DA8D4A923BCF87889A8DEA0C0921F995839EC41C0 | sha512: 68DC42ABAECD78CE34EE0E130CC74D0932D3BF53994BD45A7F804BF3C3E59CF8125283EFE67D7C12E34313401BAF8A707DDB20A015FBFB9849B96870047EDFE3
tools\_internal\api-ms-win-crt-runtime-l1-1-0.dll
md5: 5A04D702C462AC7B564F5DA8BB35A2A0 | sha1: B8ED4C5710FB8C8ED81617C11B71B22CD57D5325 | sha256: 0210604C8DD1E9AA8C2458E2734DEFF9D77897D7DFCE42BC0F28AD62D265BD9B | sha512: 9986CB05CA1203C086E7D4F0C4A30C6C7394D6FC4AE3908B25867F387BF61A393B054C3A9E13BA9A0D103C5B1D4BE874B81DC314BE611457B3BD69113D91BD3C
tools\_internal\api-ms-win-crt-stdio-l1-1-0.dll
md5: 41BA9068FD432758AE08D80470CFF8C8 | sha1: 9DE3CFF0D99E3BAEF7FF1F45187C414C5A803A9F | sha256: 3C4F7104E8257B64B4A856C06DEE4AB12E35A5BDFE361B2FC4A04A564454010B | sha512: 1D50207493B3F3A3834EF09E4F78BB03D82F2760106842E7CB57742741A1182917F3E975244543E0CEF63C16EBAD147E3E8B16E18D14C63DC3C906670CEE7545
tools\_internal\api-ms-win-crt-string-l1-1-0.dll
md5: 30A6E4B8FE2D9B2DF594E809CBBAC128 | sha1: F30559B281CB679BB406BFE42F1F501A376BCA23 | sha256: F8BBF236334C083682CD710632005CB6A5A3B60086D05946827EB8CA45E24B8D | sha512: 337949C3B5A6E13AD3AAE93294C5F97B6271F639E3296D4AAB8AC546F4417C79C1906F92AB20955CA451D5317BA7FE64EED0C7A79309E337B20516283987C2E0
tools\_internal\api-ms-win-crt-time-l1-1-0.dll
md5: 9E4620C44403DFB42D3BADD40DDEF313 | sha1: 0696DF5C3F71AED9763408D2AB8FF8CBFD1D1A41 | sha256: 5E2F92250A058802B4A72B93226616F390044C6BFE34A04B5533773806F7072E | sha512: 5B96B4775C5FAE03BA0E96D2D0F5D2FB1B4BCB05014A47686B378E11659B53A518BB56ACF0D3D076EC73EADB1B639C07A6BE969BD68C34F3F3CA77451F160001
tools\_internal\api-ms-win-crt-utility-l1-1-0.dll
md5: BD9A3823F7EAB3959C358C9A02C07424 | sha1: 4C689623C353BFFBD28C19A4B69DC85D5791B65E | sha256: 8E32928CAB5E81B35B232754A5CCF78CC55D6BC8FE362A90AB6D5EAB1FE8F5D9 | sha512: 16B9CDF77D83DA944B56772AC78DD8AF6EF94976D1468B8A32D43419487C5B0F3FF3169FB29FDEADA3F64D74B8900E7833728BF332F93809CB4A8C9CF42B7F62
tools\_internal\base_library.zip
md5: FE165DF1DB950B64688A2E617B4ACA88 | sha1: 71CAE64D1EDD9931EF75E8EF28E812E518B14DDE | sha256: 071241AC0FD6E733147A71625DE5EAD3D7702E73F8D1CBEBF3D772CBDCE0BE35 | sha512: E492A6278676EF944363149A503C7FADE9D229BDDCE7AFA919F5E72138F49557619B0BDBA68F523FFFE7FBCA2CCFD5E3269355FEBAF01F4830C1A4CC67D2E513
tools\_internal\dlss_updater\auto_updater.py
import os
import sys
import json
import shutil
import zipfile
import subprocess
import time
from urllib import request
from urllib.error import URLError
from packaging import version
from dlss_updater.version import __version__
from dlss_updater.logger import setup_logger

logger = setup_logger()

GITHUB_API_URL = "https://api.github.com/repos/Recol/DLSS-Updater/releases/latest"


def auto_update():
    logger.info("Checking for updates...")
    latest_version, download_url = check_for_updates()

    if latest_version:
        logger.info("New version available: %s", latest_version)
        user_input = input(
            "Do you want to download and install the update? (y/n): "
        ).lower()

        if user_input == "y":
            logger.info("Downloading update...")
            new_exe_path = download_update(download_url)
            if new_exe_path:
                logger.info("Update downloaded successfully.")
                logger.info(
                    "The application will now close and update. It will restart automatically."
                )
                perform_update(new_exe_path)
                return True
    else:
        logger.info("No updates available. You have the latest version.")

    return False


def check_for_updates():
    try:
        with request.urlopen(GITHUB_API_URL) as response:
            latest_release = json.loads(response.read().decode())
        latest_version = latest_release["tag_name"].lstrip("V")

        if version.parse(latest_version) > version.parse(__version__):
            return latest_version, latest_release["assets"][0]["browser_download_url"]
        else:
            return None, None
    except URLError as e:
        logger.error(f"Error checking for updates: {e}")
        return None, None


def download_update(download_url):
    try:
        update_dir = os.path.join(os.path.dirname(sys.executable), "update")
        os.makedirs(update_dir, exist_ok=True)
        update_zip = os.path.join(update_dir, "update.zip")
        request.urlretrieve(download_url, update_zip)

        with zipfile.ZipFile(update_zip, "r") as zip_ref:
            zip_ref.extractall(update_dir)

        os.remove(update_zip)

        # Look for the new executable in the update directory
        new_exe = None
        for root, dirs, files in os.walk(update_dir):
            for file in files:
                if file.lower() == "dlss_updater.exe":
                    new_exe = os.path.join(root, file)
                    break
            if new_exe:
                break

        if new_exe:
            logger.info(f"Found new executable: {new_exe}")
            return new_exe
        else:
            logger.error("Error: New executable not found in the update package.")
            return None
    except Exception as e:
        logger.error(f"Error downloading update: {e}")
        if os.path.exists(update_dir):
            shutil.rmtree(update_dir)
        return None


def update_script(current_exe, new_exe):
    # Wait for the original process to exit
    time.sleep(2)

    try:
        # Replace the old executable with the new one
        os.remove(current_exe)
        shutil.move(new_exe, current_exe)

        # Clean up the update directory
        update_dir = os.path.dirname(new_exe)
        shutil.rmtree(update_dir)

        # Start the updated executable
        subprocess.Popen([current_exe], creationflags=subprocess.CREATE_NEW_CONSOLE)
        
        # Log the update completion
        with open(os.path.join(os.path.dirname(current_exe), "update_log.txt"), "w") as f:
            f.write(f"Update completed at {time.ctime()}. New executable started.")
        
    except Exception as e:
        # Log the error
        with open(os.path.join(os.path.dirname(current_exe), "update_error_log.txt"), "w") as f:
            f.write(f"Error during update process at {time.ctime()}: {str(e)}")


def perform_update(new_exe_path):
    current_exe = sys.executable

    # Start the update process
    subprocess.Popen(
        [sys.executable, __file__, "update", current_exe, new_exe_path],
        creationflags=subprocess.CREATE_NO_WINDOW,
    )

    # Exit the current process
    sys.exit(0)


if __name__ == "__main__":
    if len(sys.argv) > 1 and sys.argv[1] == "update":
        update_script(sys.argv[2], sys.argv[3])
tools\_internal\dlss_updater\config.py
import os
import sys


def resource_path(relative_path):
    """Get absolute path to resource, works for dev and for PyInstaller"""
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")

    return os.path.join(base_path, relative_path)


LATEST_DLL_VERSIONS = {
    "nvngx_dlss.dll": "3.17.20.0",
    "nvngx_dlssg.dll": "3.17.10.0",
    "nvngx_dlssd.dll": "3.17.10.0",
}

LATEST_DLL_PATHS = {
    "nvngx_dlss.dll": resource_path(os.path.join("latest_dll", "nvngx_dlss.dll")),
    "nvngx_dlssg.dll": resource_path(os.path.join("latest_dll", "nvngx_dlssg.dll")),
    "nvngx_dlssd.dll": resource_path(os.path.join("latest_dll", "nvngx_dlssd.dll")),
}
tools\_internal\dlss_updater\constants.py
DLL_TYPE_MAP = {
    "nvngx_dlss.dll": "DLSS DLL",
    "nvngx_dlssg.dll": "DLSS Frame Generation DLL",
    "nvngx_dlssd.dll": "DLSS Ray Reconstruction DLL",
}
tools\_internal\dlss_updater\dlss_updater.log
 
tools\_internal\dlss_updater\logger.py
import logging
import sys
from pathlib import Path


def setup_logger(log_file_name="dlss_updater.log"):
    logger = logging.getLogger("DLSSUpdater")

    # Check if the logger has already been configured
    if not logger.handlers:
        logger.setLevel(logging.DEBUG)

        log_file_path = (
            Path(sys.executable).parent / log_file_name
            if getattr(sys, "frozen", False)
            else Path(__file__).parent / log_file_name
        )

        # Create handlers
        console_handler = logging.StreamHandler(sys.stdout)
        file_handler = logging.FileHandler(log_file_path, encoding="utf-8")

        # Create formatter and add it to handlers
        log_format = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
        console_handler.setFormatter(log_format)
        file_handler.setFormatter(log_format)

        # Add handlers to the logger
        logger.addHandler(console_handler)
        logger.addHandler(file_handler)

        # Prevent propagation to avoid duplicate logs
        logger.propagate = False

    return logger


# Usage example
if __name__ == "__main__":
    logger = setup_logger()
    logger.info("This is a test log message")
    logger.info("This is a test logger.info message with an argument: %s", "test arg")
tools\_internal\dlss_updater\scanner.py
import os
from pathlib import Path
from .whitelist import is_whitelisted
import asyncio
from .logger import setup_logger

logger = setup_logger()


def get_steam_install_path():
    try:
        import winreg

        key = winreg.OpenKey(
            winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Valve\Steam"
        )
        value, _ = winreg.QueryValueEx(key, "InstallPath")
        return value
    except (FileNotFoundError, ImportError):
        return None


def get_steam_libraries(steam_path):
    library_folders_path = Path(steam_path) / "steamapps" / "libraryfolders.vdf"
    if not library_folders_path.exists():
        return [Path(steam_path) / "steamapps" / "common"]

    libraries = []
    with library_folders_path.open("r") as file:
        lines = file.readlines()
        for line in lines:
            if "path" in line:
                path = line.split('"')[3]
                libraries.append(Path(path) / "steamapps" / "common")
    return libraries


from dlss_updater.whitelist import is_whitelisted
from dlss_updater.logger import setup_logger

logger = setup_logger()


async def find_dlss_dlls(library_paths, launcher_name):
    dll_names = ["nvngx_dlss.dll", "nvngx_dlssg.dll", "nvngx_dlssd.dll"]
    dll_paths = []
    for library_path in library_paths:
        for root, _, files in os.walk(library_path):
            for dll_name in dll_names:
                if dll_name.lower() in [f.lower() for f in files]:
                    dll_path = os.path.join(root, dll_name)
                    logger.debug(f"Checking DLL: {dll_path}")
                    if not is_whitelisted(dll_path):
                        logger.info(
                            f"Found non-whitelisted DLSS DLL in {launcher_name}: {dll_path}"
                        )
                        dll_paths.append(dll_path)
                    else:
                        logger.info(
                            f"Skipped whitelisted game in {launcher_name}: {dll_path}"
                        )
            await asyncio.sleep(0)  # Yield control to allow other tasks to run
    return dll_paths


def get_user_input(prompt):
    user_input = input(prompt).strip()
    return None if user_input.lower() in ["n/a", ""] else user_input


async def get_ea_games():
    ea_path = get_user_input(
        "Please enter the path for EA games or press Enter to skip: "
    )
    if ea_path is None:
        logger.info("EA games path skipped.")
        return []
    ea_games_path = Path(ea_path)
    if not ea_games_path.exists():
        logger.info(f"Invalid path for EA games: {ea_games_path}")
        return []
    logger.info(f"EA games path set to: {ea_games_path}")
    return [ea_games_path]


def get_ubisoft_install_path():
    try:
        import winreg

        key = winreg.OpenKey(
            winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WOW6432Node\Ubisoft\Launcher"
        )
        value, _ = winreg.QueryValueEx(key, "InstallDir")
        return value
    except (FileNotFoundError, ImportError):
        return None


async def get_ubisoft_games(ubisoft_path):
    ubisoft_games_path = Path(ubisoft_path) / "games"
    if not ubisoft_games_path.exists():
        return []
    return [ubisoft_games_path]


async def get_epic_games():
    epic_path = get_user_input(
        "Please enter the path for Epic Games or press Enter to skip: "
    )
    if epic_path is None:
        return []
    epic_games_path = Path(epic_path)
    if not epic_games_path.exists():
        logger.info("Invalid path for Epic Games.")
        return []
    return [epic_games_path]


async def get_gog_games():
    gog_path = get_user_input(
        "Please enter the path for GOG games or press Enter to skip: "
    )
    if gog_path is None:
        return []
    gog_games_path = Path(gog_path)
    if not gog_games_path.exists():
        logger.info("Invalid path for GOG games.")
        return []
    return [gog_games_path]


async def get_battlenet_games():
    battlenet_path = get_user_input(
        "Please enter the path for Battle.net games (Note: Please ensure you have the launcher opened first) or press Enter to skip: "
    )
    if battlenet_path is None:
        return []
    battlenet_games_path = Path(battlenet_path)
    if not battlenet_games_path.exists():
        logger.info("Invalid path for Battle.net games.")
        return []
    return [battlenet_games_path]


async def find_all_dlss_dlls():
    logger.info("Starting find_all_dlss_dlls function")
    all_dll_paths = {
        "Steam": [],
        "EA Launcher": [],
        "Ubisoft Launcher": [],
        "Epic Games Launcher": [],
        "GOG Launcher": [],
        "Battle.net Launcher": [],
    }

    # Steam
    logger.info("Checking Steam...")
    steam_path = get_steam_install_path()
    if steam_path:
        steam_libraries = get_steam_libraries(steam_path)
        all_dll_paths["Steam"] = await find_dlss_dlls(steam_libraries, "Steam")

    # EA
    logger.info("Checking EA...")
    ea_games = await get_ea_games()
    if ea_games:
        ea_dlls = await find_dlss_dlls(ea_games, "EA Launcher")
        all_dll_paths["EA Launcher"].extend(ea_dlls)

    # Ubisoft
    logger.info("Checking Ubisoft...")
    ubisoft_path = get_ubisoft_install_path()
    if ubisoft_path:
        ubisoft_games = await get_ubisoft_games(ubisoft_path)
        all_dll_paths["Ubisoft Launcher"] = await find_dlss_dlls(
            ubisoft_games, "Ubisoft Launcher"
        )

    # Epic Games
    logger.info("Checking Epic Games...")
    epic_games = await get_epic_games()
    if epic_games:
        all_dll_paths["Epic Games Launcher"] = await find_dlss_dlls(
            epic_games, "Epic Games Launcher"
        )

    # GOG
    logger.info("Checking GOG...")
    gog_games = await get_gog_games()
    if gog_games:
        all_dll_paths["GOG Launcher"] = await find_dlss_dlls(gog_games, "GOG Launcher")

    # Battle.net
    logger.info("Checking Battle.net...")
    battlenet_games = await get_battlenet_games()
    if battlenet_games:
        all_dll_paths["Battle.net Launcher"] = await find_dlss_dlls(
            battlenet_games, "Battle.net Launcher"
        )

    # Remove duplicates
    logger.info("Removing duplicates...")
    unique_dlls = set()
    for launcher in all_dll_paths:
        all_dll_paths[launcher] = [
            dll
            for dll in all_dll_paths[launcher]
            if str(dll) not in unique_dlls and not unique_dlls.add(str(dll))
        ]

    logger.info("find_all_dlss_dlls function completed")
    return all_dll_paths
tools\_internal\dlss_updater\updater.py
import os
import shutil
import pefile
from dlss_updater.config import LATEST_DLL_VERSIONS, LATEST_DLL_PATHS
from pathlib import Path
import stat
import time
import psutil
import asyncio
from packaging import version
from .logger import setup_logger
from .constants import DLL_TYPE_MAP


logger = setup_logger()


def parse_version(version_string):
    # Replace commas with dots and remove any trailing zeros
    cleaned_version = ".".join(version_string.replace(",", ".").split(".")[:3])
    return version.parse(cleaned_version)


def get_dll_version(dll_path):
    try:
        with open(dll_path, "rb") as file:
            pe = pefile.PE(data=file.read())
            for fileinfo in pe.FileInfo:
                for entry in fileinfo:
                    if hasattr(entry, "StringTable"):
                        for st in entry.StringTable:
                            for key, value in st.entries.items():
                                if key == b"FileVersion":
                                    return value.decode("utf-8").strip()
    except Exception as e:
        logger.error(f"Error reading version from {dll_path}: {e}")
    return None


def remove_read_only(file_path):
    if not os.access(file_path, os.W_OK):
        logger.info(f"Removing read-only attribute from {file_path}")
        os.chmod(file_path, stat.S_IWRITE)


def restore_permissions(file_path, original_permissions):
    os.chmod(file_path, original_permissions)


def is_file_in_use(file_path, timeout=5):
    start_time = time.time()
    while time.time() - start_time < timeout:
        try:
            with open(file_path, "rb"):
                return False  # File is not in use
        except PermissionError:
            for proc in psutil.process_iter(["pid", "name", "open_files"]):
                try:
                    for file in proc.open_files():
                        if file.path == file_path:
                            logger.error(
                                f"File {file_path} is in use by process {proc.name()} (PID: {proc.pid})"
                            )
                            return True
                except (psutil.NoSuchProcess, psutil.AccessDenied):
                    pass
        time.sleep(0.1)  # Short sleep to prevent CPU overuse
    logger.info(f"Timeout reached while checking if file {file_path} is in use")
    return True  # Assume file is NOT in use if we can't determine otherwise to prevent hanging conditions


def normalize_path(path):
    return os.path.normpath(path)


async def create_backup(dll_path):
    backup_path = dll_path.with_suffix(".dlsss")
    try:
        await asyncio.to_thread(shutil.copy2, dll_path, backup_path)
        logger.info(f"Created backup: {backup_path}")
        return backup_path
    except Exception as e:
        logger.error(f"Failed to create backup for {dll_path}: {e}")
        return None


async def update_dll(dll_path, latest_dll_path):
    dll_path = Path(normalize_path(dll_path)).resolve()
    latest_dll_path = Path(normalize_path(latest_dll_path)).resolve()
    logger.info(f"Checking DLL at {dll_path}...")

    # Determine DLL type
    dll_type = DLL_TYPE_MAP.get(dll_path.name.lower(), "Unknown DLL type")

    original_permissions = os.stat(dll_path).st_mode

    try:
        existing_version = get_dll_version(dll_path)
        latest_version = get_dll_version(latest_dll_path)

        if existing_version and latest_version:
            existing_parsed = parse_version(existing_version)
            latest_parsed = parse_version(latest_version)

            logger.info(
                f"Existing version: {existing_version}, Latest version: {latest_version}"
            )

            if existing_parsed < parse_version("2.0.0"):
                logger.info(
                    f"Skipping update for {dll_path}: Version {existing_version} is less than 2.0.0 and cannot be updated."
                )
                return False, None, dll_type

            if existing_parsed >= latest_parsed:
                logger.info(
                    f"{dll_path} is already up-to-date (version {existing_version})."
                )
                return False, None, dll_type
            else:
                logger.info(f"Update needed: {existing_version} -> {latest_version}")
                logger.info("Preparing to update...")

        # Check if the target path exists
        if not dll_path.exists():
            logger.error(f"Error: Target DLL path does not exist: {dll_path}")
            return False, None, dll_type

        # Check if the latest DLL path exists
        if not latest_dll_path.exists():
            logger.error(f"Error: Latest DLL path does not exist: {latest_dll_path}")
            return False, None, dll_type

        # Ensure the target directory is writable
        if not os.access(dll_path.parent, os.W_OK):
            logger.error(
                f"Error: No write permission to the directory: {dll_path.parent}"
            )
            return False, None, dll_type

        # Create backup
        logger.info("Creating backup...")
        backup_path = await create_backup(dll_path)
        if not backup_path:
            logger.info(f"Skipping update for {dll_path} due to backup failure.")
            return False, None, dll_type

        logger.info("Checking file permissions...")
        remove_read_only(dll_path)

        logger.info("Checking if file is in use...")
        retry_count = 3
        while retry_count > 0:
            if not await asyncio.to_thread(is_file_in_use, str(dll_path)):
                break
            logger.info(
                f"File is in use. Retrying in 2 seconds... (Attempts left: {retry_count})"
            )
            await asyncio.sleep(2)
            retry_count -= 1

        if retry_count == 0:
            logger.info(
                f"File {dll_path} is still in use after multiple attempts. Cannot update."
            )
            restore_permissions(dll_path, original_permissions)
            return False, None, dll_type

        logger.info("Starting file copy...")
        await asyncio.to_thread(shutil.copyfile, latest_dll_path, dll_path)
        logger.info("File copy completed.")

        # Restore original permissions
        restore_permissions(dll_path, original_permissions)

        logger.info(
            f"Successfully updated {dll_path} from version {existing_version} to {latest_version}."
        )
        return True, backup_path, dll_type
    except Exception as e:
        logger.error(f"Error updating {dll_path}: {e}")
        restore_permissions(dll_path, original_permissions)
        return False, None, dll_type
tools\_internal\dlss_updater\utils.py
import os


def find_file_in_directory(directory, filename):
    for root, _, files in os.walk(directory):
        if filename in files:
            return os.path.join(root, filename)
    return None
tools\_internal\dlss_updater\version.py
__version__ = "2.2.2"
tools\_internal\dlss_updater\whitelist.py
import os
from dlss_updater.logger import setup_logger

logger = setup_logger()

WHITELISTED_GAMES = {
    "Warframe",
    "3DMark",
    "Fortnite",
    "The First Descendant",
    "EVIL DEAD The Game",
    "Escape From Tarkov",
    "Escape from Tarkov Arena",
    "Planetside 2",
    "AFOP",
    "Back 4 Blood",
    "Squad",
    "Squad 44",
    "Chivalry 2",
    "Need For Speed Unbound",
    "StarshipTroopersExtermination",
    "Space Marine 2",
    # Add more games as needed
}


def is_whitelisted(game_path):
    logger.debug(f"Checking whitelist for: {game_path}")
    path_parts = game_path.lower().split(os.path.sep)

    for game in WHITELISTED_GAMES:
        game_words = game.lower().split()
        logger.debug(f"Checking against whitelisted game: {game}")

        if all(word in " ".join(path_parts) for word in game_words):
            logger.info(f"Whitelist match found: {game} in {game_path}")
            return True

    logger.debug(f"No whitelist match found for: {game_path}")
    return False
tools\_internal\dlss_updater\__init__.py
from .scanner import get_steam_install_path, get_steam_libraries, find_dlss_dlls
from .updater import update_dll
from .whitelist import is_whitelisted
from .version import __version__
from .config import LATEST_DLL_PATHS
from .auto_updater import auto_update
from .logger import setup_logger
from .constants import DLL_TYPE_MAP

__all__ = [
    "get_steam_install_path",
    "get_steam_libraries",
    "find_dlss_dlls",
    "update_dll",
    "is_whitelisted",
    "__version__",
    "LATEST_DLL_PATHS",
    "auto_update",
    "setup_logger",
    "DLL_TYPE_MAP",
]
tools\_internal\latest_dll\nvngx_dlss.dll
md5: 53DBEC92BB250E667CBC532D5D782316 | sha1: B3FA323571FA218895C48928BD8C649E65A55A62 | sha256: 11786BF17315F0474E0A3DF7AD360F1241256ADAB98CC4579936217ED764A66B | sha512: CD472FAA8F2622D271C8236198D02C41C16DD26A8718A10615EA65F714277517B8861B9EF11F47E900563C1A0F5260EDE3497532115F939B8AD0DEEB059C2C39
tools\_internal\latest_dll\nvngx_dlssd.dll
md5: FDFAC845AB72D509A24EA2C16A1619C4 | sha1: 079166CF150BB7D3DAA37AF3055A82D9F9512AD2 | sha256: 9D18B5A5506910FE17BC4F032C56CB00CF1C3D622C5C8B04798E67463D6006A5 | sha512: FA70756CC253E2DEB0B63800A2E55D894FD728B04E86812E5AD26A4ED45EC004C19B8ABD9ED510D024D37E0BF6636A32A81BA34349550F3E0AF1D88094DCB4A3
tools\_internal\latest_dll\nvngx_dlssg.dll
md5: 69E9F9DC32D0AEF4E7C986E2339A0E52 | sha1: 5D710B40D8C6583F13C476F6560E5D99580E3E1A | sha256: 0F018D0811C4A05EF6302E0065BEF8C54E6562358DEB5BE6BFB45DB3DF0A8343 | sha512: B009A90BB1AD0DA46F478589C78B30A4090F957EA48B5432E67B77A3AA4CD0B7E683AF4AE82AE73B9526084D3DDFBA1A652C83718A0E044D1A3325F07CC3F996
tools\_internal\libcrypto-3.dll
md5: 123AD0908C76CCBA4789C084F7A6B8D0 | sha1: 86DE58289C8200ED8C1FC51D5F00E38E32C1AAD5 | sha256: 4E5D5D20D6D31E72AB341C81E97B89E514326C4C861B48638243BDF0918CFA43 | sha512: 80FAE0533BA9A2F5FA7806E86F0DB8B6AAB32620DDE33B70A3596938B529F3822856DE75BDDB1B06721F8556EC139D784BC0BB9C8DA0D391DF2C20A80D33CB04
tools\_internal\libffi-8.dll
md5: 0F8E4992CA92BAAF54CC0B43AACCCE21 | sha1: C7300975DF267B1D6ADCBAC0AC93FD7B1AB49BD2 | sha256: EFF52743773EB550FCC6CE3EFC37C85724502233B6B002A35496D828BD7B280A | sha512: 6E1B223462DC124279BFCA74FD2C66FE18B368FFBCA540C84E82E0F5BCBEA0E10CC243975574FA95ACE437B9D8B03A446ED5EE0C9B1B094147CEFAF704DFE978
tools\_internal\libssl-3.dll
md5: 4FF168AAA6A1D68E7957175C8513F3A2 | sha1: 782F886709FEBC8C7CEBCEC4D92C66C4D5DBCF57 | sha256: 2E4D35B681A172D3298CAF7DC670451BE7A8BA27C26446EFC67470742497A950 | sha512: C372B759B8C7817F2CBB78ECCC5A42FA80BDD8D549965BD925A97C3EEBDCE0335FBFEC3995430064DEAD0F4DB68EBB0134EB686A0BE195630C49F84B468113E3
tools\_internal\pefile-2024.8.26.dist-info\INSTALLER
 
tools\_internal\pefile-2024.8.26.dist-info\LICENSE
 
tools\_internal\pefile-2024.8.26.dist-info\METADATA
tools\_internal\pefile-2024.8.26.dist-info\RECORD
 
tools\_internal\pefile-2024.8.26.dist-info\REQUESTED
 
tools\_internal\pefile-2024.8.26.dist-info\top_level.txt
ordlookup
pefile
peutils
tools\_internal\pefile-2024.8.26.dist-info\WHEEL
 
tools\_internal\psutil-6.0.0.dist-info\INSTALLER
 
tools\_internal\psutil-6.0.0.dist-info\LICENSE
 
tools\_internal\psutil-6.0.0.dist-info\METADATA
tools\_internal\psutil-6.0.0.dist-info\RECORD
 
tools\_internal\psutil-6.0.0.dist-info\REQUESTED
 
tools\_internal\psutil-6.0.0.dist-info\top_level.txt
psutil
tools\_internal\psutil-6.0.0.dist-info\WHEEL
 
tools\_internal\psutil\_psutil_windows.pyd
md5: 3E579844160DE8322D574501A0F91516 | sha1: C8DE193854F7FC94F103BD4AC726246981264508 | sha256: 95F01CE7E37F6B4B281DBC76E9B88F28A03CB02D41383CC986803275A1CD6333 | sha512: EE2A026E8E70351D395329C78A07ACB1B9440261D2557F639E817A8149BA625173EF196AED3D1C986577D78DC1A7EC9FED759C19346C51511474FE6D235B1817
tools\_internal\pyexpat.pyd
md5: 8C1F876831395D146E3BCADCEA2486DD | sha1: 82CBFB59F0581A0554D6A5061E1F82E6B46A3473 | sha256: D32D7722D6ED2B2780C039D63AF044554C0BA9CF6E6EFEF28EBC79CB443D2DA0 | sha512: 73067BB8DCC44CD52551A48400BD8E721268DD44F9884EBB603452ECE9C7BD276D40B7CBCA4F10223F27B8CCDCD1D2EC298A1C767A691859AEA10056C108A730
tools\_internal\python3.dll
md5: 5EACE36402143B0205635818363D8E57 | sha1: AE7B03251A0BAC083DEC3B1802B5CA9C10132B4C | sha256: 25A39E721C26E53BEC292395D093211BBA70465280ACFA2059FA52957EC975B2 | sha512: 7CB3619EA46FBAAF45ABFA3D6F29E7A5522777980E0A9D2DA021D6C68BCC380ABE38E8004E1F31D817371FB3CDD5425D4BB115CB2DC0D40D59D111A2D98B21D4
tools\_internal\python312.dll
md5: 166CC2F997CBA5FC011820E6B46E8EA7 | sha1: D6179213AFEA084F02566EA190202C752286CA1F | sha256: C045B57348C21F5F810BAE60654AE39490846B487378E917595F1F95438F9546 | sha512: 49D9D4DF3D7EF5737E947A56E48505A2212E05FDBCD7B83D689639728639B7FD3BE39506D7CFCB7563576EBEE879FD305370FDB203909ED9B522B894DD87AACB
tools\_internal\release_notes.txt
Version 2.2.0:
Whitelist Planetside 2, Avatar Frontiers of Pandora, and Escape From Tarkov Arena.
Fix whitelist detection behaviour for games with anomalous game installations (Escape From Tarkov).
Implement better logging for debugging whitelists behaviour to be more informative to the user.
Implement support for DLSS Upscaler DLL/Frame Generation DLL/Ray Reconstruction differentation for the Summary for if it's skipped/updated.

Version 2.2.1:
Whitelist Space Marines 2.

Version 2.2.2:
Initial support for Chocolatey deployment.
tools\_internal\select.pyd
md5: 7C14C7BC02E47D5C8158383CB7E14124 | sha1: 5EE9E5968E7B5CE9E4C53A303DAC9FC8FAF98DF3 | sha256: 00BD8BB6DEC8C291EC14C8DDFB2209D85F96DB02C7A3C39903803384FF3A65E5 | sha512: AF70CBDD882B923013CB47545633B1147CE45C547B8202D7555043CFA77C1DEEE8A51A2BC5F93DB4E3B9CBF7818F625CA8E3B367BFFC534E26D35F475351A77C
tools\_internal\setuptools\_vendor\autocommand-2.2.2.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\autocommand-2.2.2.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\autocommand-2.2.2.dist-info\METADATA
tools\_internal\setuptools\_vendor\autocommand-2.2.2.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\autocommand-2.2.2.dist-info\top_level.txt
autocommand
tools\_internal\setuptools\_vendor\autocommand-2.2.2.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\backports.tarfile-1.2.0.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\backports.tarfile-1.2.0.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\backports.tarfile-1.2.0.dist-info\METADATA
tools\_internal\setuptools\_vendor\backports.tarfile-1.2.0.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\backports.tarfile-1.2.0.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\backports.tarfile-1.2.0.dist-info\top_level.txt
backports
tools\_internal\setuptools\_vendor\backports.tarfile-1.2.0.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\importlib_metadata-8.0.0.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\importlib_metadata-8.0.0.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\importlib_metadata-8.0.0.dist-info\METADATA
tools\_internal\setuptools\_vendor\importlib_metadata-8.0.0.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\importlib_metadata-8.0.0.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\importlib_metadata-8.0.0.dist-info\top_level.txt
importlib_metadata
tools\_internal\setuptools\_vendor\importlib_metadata-8.0.0.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\importlib_resources-6.4.0.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\importlib_resources-6.4.0.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\importlib_resources-6.4.0.dist-info\METADATA
tools\_internal\setuptools\_vendor\importlib_resources-6.4.0.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\importlib_resources-6.4.0.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\importlib_resources-6.4.0.dist-info\top_level.txt
importlib_resources
tools\_internal\setuptools\_vendor\importlib_resources-6.4.0.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\inflect-7.3.1.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\inflect-7.3.1.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\inflect-7.3.1.dist-info\METADATA
tools\_internal\setuptools\_vendor\inflect-7.3.1.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\inflect-7.3.1.dist-info\top_level.txt
inflect
tools\_internal\setuptools\_vendor\inflect-7.3.1.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\jaraco.context-5.3.0.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\jaraco.context-5.3.0.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\jaraco.context-5.3.0.dist-info\METADATA
tools\_internal\setuptools\_vendor\jaraco.context-5.3.0.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\jaraco.context-5.3.0.dist-info\top_level.txt
jaraco
tools\_internal\setuptools\_vendor\jaraco.context-5.3.0.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\jaraco.functools-4.0.1.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\jaraco.functools-4.0.1.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\jaraco.functools-4.0.1.dist-info\METADATA
tools\_internal\setuptools\_vendor\jaraco.functools-4.0.1.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\jaraco.functools-4.0.1.dist-info\top_level.txt
jaraco
tools\_internal\setuptools\_vendor\jaraco.functools-4.0.1.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\jaraco.text-3.12.1.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\jaraco.text-3.12.1.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\jaraco.text-3.12.1.dist-info\METADATA
tools\_internal\setuptools\_vendor\jaraco.text-3.12.1.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\jaraco.text-3.12.1.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\jaraco.text-3.12.1.dist-info\top_level.txt
jaraco
tools\_internal\setuptools\_vendor\jaraco.text-3.12.1.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\more_itertools-10.3.0.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\more_itertools-10.3.0.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\more_itertools-10.3.0.dist-info\METADATA
tools\_internal\setuptools\_vendor\more_itertools-10.3.0.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\more_itertools-10.3.0.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\more_itertools-10.3.0.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\packaging-24.1.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\packaging-24.1.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\packaging-24.1.dist-info\LICENSE.APACHE
 
tools\_internal\setuptools\_vendor\packaging-24.1.dist-info\LICENSE.BSD
 
tools\_internal\setuptools\_vendor\packaging-24.1.dist-info\METADATA
tools\_internal\setuptools\_vendor\packaging-24.1.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\packaging-24.1.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\packaging-24.1.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\platformdirs-4.2.2.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\platformdirs-4.2.2.dist-info\licenses\LICENSE
 
tools\_internal\setuptools\_vendor\platformdirs-4.2.2.dist-info\METADATA
tools\_internal\setuptools\_vendor\platformdirs-4.2.2.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\platformdirs-4.2.2.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\platformdirs-4.2.2.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\tomli-2.0.1.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\tomli-2.0.1.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\tomli-2.0.1.dist-info\METADATA
tools\_internal\setuptools\_vendor\tomli-2.0.1.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\tomli-2.0.1.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\tomli-2.0.1.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\typeguard-4.3.0.dist-info\entry_points.txt
[pytest11]
typeguard = typeguard._pytest_plugin
tools\_internal\setuptools\_vendor\typeguard-4.3.0.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\typeguard-4.3.0.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\typeguard-4.3.0.dist-info\METADATA
tools\_internal\setuptools\_vendor\typeguard-4.3.0.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\typeguard-4.3.0.dist-info\top_level.txt
typeguard
tools\_internal\setuptools\_vendor\typeguard-4.3.0.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\typing_extensions-4.12.2.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\typing_extensions-4.12.2.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\typing_extensions-4.12.2.dist-info\METADATA
tools\_internal\setuptools\_vendor\typing_extensions-4.12.2.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\typing_extensions-4.12.2.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\wheel-0.43.0.dist-info\entry_points.txt
[console_scripts]
wheel=wheel.cli:main

[distutils.commands]
bdist_wheel=wheel.bdist_wheel:bdist_wheel

tools\_internal\setuptools\_vendor\wheel-0.43.0.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\wheel-0.43.0.dist-info\LICENSE.txt
MIT License

Copyright (c) 2012 Daniel Holth <[email protected]> and contributors

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
tools\_internal\setuptools\_vendor\wheel-0.43.0.dist-info\METADATA
tools\_internal\setuptools\_vendor\wheel-0.43.0.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\wheel-0.43.0.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\wheel-0.43.0.dist-info\WHEEL
 
tools\_internal\setuptools\_vendor\zipp-3.19.2.dist-info\INSTALLER
 
tools\_internal\setuptools\_vendor\zipp-3.19.2.dist-info\LICENSE
 
tools\_internal\setuptools\_vendor\zipp-3.19.2.dist-info\METADATA
tools\_internal\setuptools\_vendor\zipp-3.19.2.dist-info\RECORD
 
tools\_internal\setuptools\_vendor\zipp-3.19.2.dist-info\REQUESTED
 
tools\_internal\setuptools\_vendor\zipp-3.19.2.dist-info\top_level.txt
zipp
tools\_internal\setuptools\_vendor\zipp-3.19.2.dist-info\WHEEL
 
tools\_internal\typeguard-4.3.0.dist-info\entry_points.txt
[pytest11]
typeguard = typeguard._pytest_plugin
tools\_internal\typeguard-4.3.0.dist-info\INSTALLER
 
tools\_internal\typeguard-4.3.0.dist-info\LICENSE
 
tools\_internal\typeguard-4.3.0.dist-info\METADATA
tools\_internal\typeguard-4.3.0.dist-info\RECORD
 
tools\_internal\typeguard-4.3.0.dist-info\top_level.txt
typeguard
tools\_internal\typeguard-4.3.0.dist-info\WHEEL
 
tools\_internal\ucrtbase.dll
md5: 6914EF1FAD4393589072E06A4630D255 | sha1: 028669A97DB7C007441AE3330767968544EBA3C6 | sha256: 81C9B5D54E1B1DA192F4A167F7E06439E36C670A99AF2F1EF056E0959E85DE57 | sha512: B682C749D6F2ED56D69FF4F8520899638FA6F436B2AF8241DB686CCBC606D23D4E77721222AB7AD863336D5E5AAFA1033B94F550198A1A083AF5811CE8DEC004
tools\_internal\unicodedata.pyd
md5: A8ED52A66731E78B89D3C6C6889C485D | sha1: 781E5275695ACE4A5C3AD4F2874B5E375B521638 | sha256: BF669344D1B1C607D10304BE47D2A2FB572E043109181E2C5C1038485AF0C3D7 | sha512: 1C131911F120A4287EBF596C52DE047309E3BE6D99BC18555BD309A27E057CC895A018376AA134DF1DC13569F47C97C1A6E8872ACEDFA06930BBF2B175AF9017
tools\_internal\VCRUNTIME140.dll
md5: BE8DBE2DC77EBE7F88F910C61AEC691A | sha1: A19F08BB2B1C1DE5BB61DAF9F2304531321E0E40 | sha256: 4D292623516F65C80482081E62D5DADB759DC16E851DE5DB24C3CBB57B87DB83 | sha512: 0DA644472B374F1DA449A06623983D0477405B5229E386ACCADB154B43B8B083EE89F07C3F04D2C0C7501EAD99AD95AECAA5873FF34C5EEB833285B598D5A655
tools\_internal\VCRUNTIME140_1.dll
md5: F8DFA78045620CF8A732E67D1B1EB53D | sha1: FF9A604D8C99405BFDBBF4295825D3FCBC792704 | sha256: A113F192195F245F17389E6ECBED8005990BCB2476DDAD33F7C4C6C86327AFE5 | sha512: BA7F8B7AB0DEB7A7113124C28092B543E216CA08D1CF158D9F40A326FB69F4A2511A41A59EA8482A10C9EC4EC8AC69B70DFE9CA65E525097D93B819D498DA371
tools\_internal\wheel-0.43.0.dist-info\entry_points.txt
[console_scripts]
wheel=wheel.cli:main

[distutils.commands]
bdist_wheel=wheel.bdist_wheel:bdist_wheel

tools\_internal\wheel-0.43.0.dist-info\INSTALLER
 
tools\_internal\wheel-0.43.0.dist-info\LICENSE.txt
MIT License

Copyright (c) 2012 Daniel Holth <[email protected]> and contributors

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
tools\_internal\wheel-0.43.0.dist-info\METADATA
tools\_internal\wheel-0.43.0.dist-info\RECORD
 
tools\_internal\wheel-0.43.0.dist-info\REQUESTED
 
tools\_internal\wheel-0.43.0.dist-info\WHEEL
 
tools\_internal\_asyncio.pyd
md5: 90A38A8271379A371A2A4C580E9CD97D | sha1: 3FDE48214FD606114D7DF72921CF66EF84BC04C5 | sha256: 3B46FA8F966288EAD65465468C8E300B9179F5D7B39AA25D7231FF3702CA7887 | sha512: 3BDE0B274F959D201F7820E3C01896C24E4909348C0BC748ADE68610A13A4D1E980C50DAB33466469CDD19EB90915B45593FAAB6C3609AE3F616951089DE1FDC
tools\_internal\_bz2.pyd
md5: 30F396F8411274F15AC85B14B7B3CD3D | sha1: D3921F39E193D89AA93C2677CBFB47BC1EDE949C | sha256: CB15D6CC7268D3A0BD17D9D9CEC330A7C1768B1C911553045C73BC6920DE987F | sha512: 7D997EF18E2CBC5BCA20A4730129F69A6D19ABDDA0261B06AD28AD8A2BDDCDECB12E126DF9969539216F4F51467C0FE954E4776D842E7B373FE93A8246A5CA3F
tools\_internal\_ctypes.pyd
md5: 5377AB365C86BBCDD998580A79BE28B4 | sha1: B0A6342DF76C4DA5B1E28A036025E274BE322B35 | sha256: 6C5F31BEF3FDBFF31BEAC0B1A477BE880DDA61346D859CF34CA93B9291594D93 | sha512: 56F28D431093B9F08606D09B84A392DE7BA390E66B7DEF469B84A21BFC648B2DE3839B2EEE4FB846BBF8BB6BA505F9D720CCB6BB1A723E78E8E8B59AB940AC26
tools\_internal\_decimal.pyd
md5: 7AE94F5A66986CBC1A2B3C65A8D617F3 | sha1: 28ABEFB1DF38514B9FFE562F82F8C77129CA3F7D | sha256: DA8BB3D54BBBA20D8FA6C2FD0A4389AEC80AB6BD490B0ABEF5BD65097CBC0DA4 | sha512: FBB599270066C43B5D3A4E965FB2203B085686479AF157CD0BB0D29ED73248B6F6371C5158799F6D58B1F1199B82C01ABE418E609EA98C71C37BB40F3226D8C5
tools\_internal\_elementtree.pyd
md5: D20E0888B180C980E54B9E74DB901C26 | sha1: C1EA58DD9C475F1FD5E89BE2088C7EA0D38EFCCE | sha256: 798E8DDFC45495C26593A0550554E32A62CBDD9DA5556E25DA7231A0BF8FD274 | sha512: FBF27FC1021D7954C653CAC702121E46D39F3A6A09E5D60392334F40D589FEDA4F6714A5BAE6EBC2EF0196776A650BC8A0A5DD0A16A0E6E4F2911918443FBE79
tools\_internal\_hashlib.pyd
md5: A25BC2B21B555293554D7F611EAA75EA | sha1: A0DFD4FCFAE5B94D4471357F60569B0C18B30C17 | sha256: 43ACECDC00DD5F9A19B48FF251106C63C975C732B9A2A7B91714642F76BE074D | sha512: B39767C2757C65500FC4F4289CB3825333D43CB659E3B95AF4347BD2A277A7F25D18359CEDBDDE9A020C7AB57B736548C739909867CE9DE1DBD3F638F4737DC5
tools\_internal\_lzma.pyd
md5: 9E94FAC072A14CA9ED3F20292169E5B2 | sha1: 1EEAC19715EA32A65641D82A380B9FA624E3CF0D | sha256: A46189C5BD0302029847FED934F481835CB8D06470EA3D6B97ADA7D325218A9F | sha512: B7B3D0F737DD3B88794F75A8A6614C6FB6B1A64398C6330A52A2680CAF7E558038470F6F3FC024CE691F6F51A852C05F7F431AC2687F4525683FF09132A0DECB
tools\_internal\_multiprocessing.pyd
md5: 41EE16713672E1BFC4543E6AE7588D72 | sha1: 5FF680727935169E7BCB3991404C68FE6B2E4209 | sha256: 2FEB0BF9658634FE8405F17C4573FEB1C300E9345D7965738BEDEB871A939E6B | sha512: CB407996A42BDF8BC47CE3F4C4485E27A4C862BF543410060E9F65D63BFBA4C5A854A1F0601E9D8933C549E5459CB74CA27F3126C8CDBDE0BDD2E803390AB942
tools\_internal\_overlapped.pyd
md5: 737F46E8DAC553427A823C5F0556961C | sha1: 30796737CAEC891A5707B71CF0AD1072469DD9DE | sha256: 2187281A097025C03991CD8EB2C9CA416278B898BD640A8732421B91ADA607E8 | sha512: F0F4B9045D5328335DC5D779F7EF5CE322EAA8126EC14A84BE73EDD47EFB165F59903BFF95EB0661EBA291B4BB71474DD0B0686EDC132F2FBA305C47BB3D019F
tools\_internal\_queue.pyd
md5: E1C6FF3C48D1CA755FB8A2BA700243B2 | sha1: 2F2D4C0F429B8A7144D65B179BEAB2D760396BFB | sha256: 0A6ACFD24DFBAA777460C6D003F71AF473D5415607807973A382512F77D075FA | sha512: 55BFD1A848F2A70A7A55626FB84086689F867A79F09726C825522D8530F4E83708EB7CAA7F7869155D3AE48F3B6AA583B556F3971A2F3412626AE76680E83CA1
tools\_internal\_socket.pyd
md5: 69801D1A0809C52DB984602CA2653541 | sha1: 0F6E77086F049A7C12880829DE051DCBE3D66764 | sha256: 67ACA001D36F2FCE6D88DBF46863F60C0B291395B6777C22B642198F98184BA3 | sha512: 5FCE77DD567C046FEB5A13BAF55FDD8112798818D852DFECC752DAC87680CE0B89EDFBFBDAB32404CF471B70453A33F33488D3104CD82F4E0B94290E83EAE7BB
tools\_internal\_ssl.pyd
md5: 90F080C53A2B7E23A5EFD5FD3806F352 | sha1: E3B339533BC906688B4D885BDC29626FBB9DF2FE | sha256: FA5E6FE9545F83704F78316E27446A0026FBEBB9C0C3C63FAED73A12D89784D4 | sha512: 4B9B8899052C1E34675985088D39FE7C95BFD1BBCE6FD5CBAC8B1E61EDA2FBB253EEF21F8A5362EA624E8B1696F1E46C366835025AABCB7AA66C1E6709AAB58A
tools\_internal\_uuid.pyd
md5: D8C6D60EA44694015BA6123FF75BD38D | sha1: 813DEB632F3F3747FE39C5B8EF67BADA91184F62 | sha256: 8AE23BFA84CE64C3240C61BEDB06172BFD76BE2AD30788D4499CB24047FCE09F | sha512: D3D408C79E291ED56CA3135B5043E555E53B70DFF45964C8C8D7FFA92B27C6CDEA1E717087B79159181F1258F9613FE6D05E3867D9C944F43A980B5BF27A75AB
tools\_internal\_wmi.pyd
md5: 827615EEE937880862E2F26548B91E83 | sha1: 186346B816A9DE1BA69E51042FAF36F47D768B6C | sha256: 73B7EE3156EF63D6EB7DF9900EF3D200A276DF61A70D08BD96F5906C39A3AC32 | sha512: 45114CAF2B4A7678E6B1E64D84B118FB3437232B4C0ADD345DDB6FBDA87CEBD7B5ADAD11899BDCD95DDFE83FDC3944A93674CA3D1B5F643A2963FBE709E44FB8

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Add to Builder Version Downloads Last Updated Status
DLSS Updater 2.5.0 6 Monday, November 18, 2024
Responded
DLSS Updater 2.2.6 12 Thursday, November 14, 2024
Responded

This package has no dependencies.

Discussion for the DLSS Updater Package

Ground Rules:

  • This discussion is only about DLSS Updater and the DLSS Updater package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or DLSS Updater, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus