Automatic Core Updater (windows)

I wanted to share my powershell script that automatically fetches the list of cores and downloads the ones that are updated in the server, it assumes you have installed Retroarch to it’s default location, but if you didn’t change $cores_path and $logfile to their appropriate location.

  • Run it by right click it and select “Run with powershell”.

  • If you are asked for confirmation for security reasons type: yes

NOTE: the first time it runs it will re-download all your cores, it’s normal. (only the first time)

If you want to make it a scheduled task the security warning may be annoying, you can bypass it by making a batch script with this code:

powershell -noprofile -nologo -executionpolicy bypass -File RA_cores_updater.ps1

No more to say, here is the Link to the Retroarch Automatic Core Updater for windows (Right click it and “save as”)

4 Likes

Thanks for this. When I initially ran it, the script wasn’t able to connect to the buildbot website to download the timestamps. I had to replace: Start-BitsTransfer -Source $cores_url/.index-extended -Destination $cores_path\.timestamps.new -TransferType Download

With this:

Invoke-RestMethod -uri $cores_url/.index-extended -OutFile $cores_path\.timestamps.new

Which is a little odd since Start-BitsTransfer works fine when actually downloading the zips. But this was very helpful, thanks!

1 Like

Just wanted to add a quick note to this.

First, thanks for the script! This is very helpful.

If your copy of Retroarch is installed anywhere but the default location, this doesn’t work. You’ll need to edit lines 11 and 12 to set the proper paths for the cores and output files.

$cores_path="c:\path\to\retroarch\cores"
$logfile="$cores_path\cores_updater.log"

Other than that, :metal: !

1 Like

Works great! Just what I was looking for…

@Nadonate, do you know Stellar?

For sure! I use it to keep RA up to date. For updating cores, I was looking for something more automated.

First of all thanks for this great script! However when I run it it tends to generate errors, see below. Any thoughts? It seems to be running ok for most of them. It’s occurring on this line:

$current_timestamp=$timestamp_new.ToString($timestamp_new).Split(" ")[0]

  • 2020-02-11 UPDATED mame2003_plus_libretro.dll
  • 2019-12-02 UPDATED mame2010_libretro.dll
  • 2020-03-18 UPDATED mame2015_libretro.dll
  • 2020-02-09 UPDATED mame2016_libretro.dll
You cannot call a method on a null-valued expression.
At line:26 char:13
+             $current_timestamp=$timestamp_new.ToString($timestamp_new ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
  • 2020-02-09 UPDATED mame_libretro.dll
  • 2019-12-02 UPDATED mednafen_gba_libretro.dll
  • 2020-03-26 UPDATED thepowdertoy_libretro.dll
  • 2020-05-09 UPDATED tic80_libretro.dll
  • 2020-04-19 UPDATED tyrquake_libretro.dll
Cannot find an overload for "ToString" and the argument count: "1".
At line:26 char:13
+             $current_timestamp=$timestamp_new.ToString($timestamp_new ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest
  • 2020-04-19 UPDATED ume2015_libretro.dll
  • 2020-03-12 UPDATED vbam_libretro.dll
  • 2020-01-08 UPDATED vba_next_libretro.dll

Retroarch added a core updater for installed cores a while ago, i would suggest everyone to use that instead of my old script. I also suggest to make a backup before updating, some core updates may break compatibility with savestates or introduce problems, so be careful if you are trying to finish a game, it could ruin your day.