Homebrew [Release] Universal-Updater - An easy to use app for installing and updating 3DS homebrew!

SuperSaiyajinVoltZ

Member
OP
Newcomer
Joined
Nov 9, 2019
Messages
21
Trophies
0
Age
19
Location
Deutschland.
XP
165
Country
Germany
Universal-Updater
An easy to use app for installing and updating 3DS homebrew

Universal-Updater is a homebrew application for the Nintendo 3DS with the intention to make downloading other homebrew simple and easy. No need to manually copy files or go through installation processes, as it does that for you.

Its features include:
  • A store format with a concept similar to the Cydia repositories
    • The default is Universal-DB
    • Want to add more? Go to settings, choose "Select Unistore", click the + icon and select one from the list, enter a URL, or scan a QR code
  • Customization in sorting and display
    • All sorting keys: "Title", "Author", and "Last Updated"
    • Direction can be Ascending or Descending
    • App display can be shown in either a grid or rows
  • Background installation so you can keep using the rest of the app while installing
  • Searching and markings to make finding apps easy
  • Viewing screenshots and release notes for apps
  • Shortcuts for easily updating frequently updated apps when using the Homebrew Launcher
  • Translations for users of many languages

Screenshots

entry-info.png
download-list.png

queue-menu.png
search-menu.png

sort-menu.png
settings-menu.png

mark-menu.png
screenshot.png

release-notes.png
list-style.png

language-selection.png
store-selection.png

recommended-unistores.png
auto-update-settings.png

gui-settings.png
directory-settings.png

directory-selection.png
credits.png

Download
:download: You can download from it's GitHub, Universal-DB, or our site
:arrow: Source code is on GitHub too

Contact
The best ways to contact us are to join our Discord server, make a discussion or issue on the GitHub repository, or reply to this thread.



Credits
 
Last edited by SuperSaiyajinVoltZ,

PabloMK7

Red Yoshi! ^ω^
Developer
Joined
Feb 21, 2014
Messages
2,477
Trophies
1
Age
22
Location
Yoshi's Island
XP
3,698
Country
Spain

SuperSaiyajinVoltZ

Member
OP
Newcomer
Joined
Nov 9, 2019
Messages
21
Trophies
0
Age
19
Location
Deutschland.
XP
165
Country
Germany
  • Like
Reactions: cvskid

SuperSaiyajinVoltZ

Member
OP
Newcomer
Joined
Nov 9, 2019
Messages
21
Trophies
0
Age
19
Location
Deutschland.
XP
165
Country
Germany
Great! What about script to retroarch download?
The latest release v2.0.0 has the Problem, that you can only download a specific amount of Megabytes, because it was saved to RAM first. The next Release will allow to download it correctly because it is directly saved to the SD Card then and I'm Pretty sure someone will do a Script for it too soon. :)

--------------------- MERGED ---------------------------

This is a damn good idea. Cheers, friend. :yay:
Thanks! :D
 

MrHuu

Well-Known Member
Member
Joined
Sep 19, 2015
Messages
501
Trophies
0
Age
35
XP
1,216
Country
Netherlands
The latest release v2.0.0 has the Problem, that you can only download a specific amount of Megabytes, because it was saved to RAM first. The next Release will allow to download it correctly because it is directly saved to the SD Card then and I'm Pretty sure someone will do a Script for it too soon. :)

Does it have the ability to extract only a specified file from an archive?

I really don't want to extract the full RetroArch release archive on my 3ds itself, which currently expands to ~300mb with over 4500 files.

Just extracting the cores would be great.
 
  • Like
Reactions: SuperSaiyajinVoltZ

SuperSaiyajinVoltZ

Member
OP
Newcomer
Joined
Nov 9, 2019
Messages
21
Trophies
0
Age
19
Location
Deutschland.
XP
165
Country
Germany
Does it have the ability to extract only a specified file from an archive?

I really don't want to extract the full RetroArch release archive on my 3ds itself, which currently expands to ~300mb with over 4500 files.

Just extracting the cores would be great.
Yeah, it is possible, you can do something like that:

{
"type": "extractFile",
"file": "/LeafEdit.7z",
"input": "/LeafEdit.3dsx",
"output": "/3ds/LeafEdit.3dsx",
"message": "Extracting File... please wait."
}

This will extract `LeafEdit.3dsx` only from the Archive for example and put it inside `sdmc:/3ds/`. :)

You can also have a look inside the wiki here: https://github.com/Universal-Team/Universal-Updater/wiki
 
  • Like
Reactions: MrHuu

SuperSaiyajinVoltZ

Member
OP
Newcomer
Joined
Nov 9, 2019
Messages
21
Trophies
0
Age
19
Location
Deutschland.
XP
165
Country
Germany
If someone likes to see a Little overview, I recorded Universal-Updater real quick. Don't expect much of that Video, because it's just an overview, Nothing more. Tutorials like "How to write Scripts" and such will follow in the future! :)

 

MrHuu

Well-Known Member
Member
Joined
Sep 19, 2015
Messages
501
Trophies
0
Age
35
XP
1,216
Country
Netherlands
I still have a few other questions regarding some possible idea's for a retroarch script.

I would like create a few options:
- Update a single nightly cia or 3dsx core
- Update all nightly cia or 3dsx cores

- Update a single stable cia or 3dsx core
- Update all stable cia or 3dsx cores

- Setup full nightly retroarch cia or 3dsx (copy retroarch folder and all cores)
- Setup full stable retroarch cia or 3dsx (copy retroarch folder and all cores)

- Setup base folder nightly retroarch (only copy retroarch folder)
- Setup base folder stable retroarch (only copy retroarch folder)

Currently with 44 cores available, this would create 182 menu entry's.

Would this exceed the limits of Universal-Updater? If not,


#1
Would it be possible to create sub-menus?

Code:
Script ->
  Cia Builds(menu)->
    Download all cia cores
    Download single cia core(menu)->
      Download single core1
      Download single core2
      Download single core3

  3dsx Builds(menu)->
    Download all 3dsx cores
    Download single 3dsx core(menu)->
      Download single core1
      Download single core2
      Download single core3

#2
An other issue would be the the download links.

Retroarch builds are not available trough github or other means with an updated link to the latest builds.
The script would be required to be updated with static links to the available downloads.

This would be quite a pain with the naming convention used with the nightly builds: 2019-12-29_RetroArch_cia.7z

This can (and should) be automated, but for the nightly builds it would unfortunately result into updating the script at a daily basis.


Or, maybe, some sort of pre-defined variables could be used to create a variable filename

Code:
   "Install cia": [
       {
           "type": "downloadFileDaily",
           "filename": "$[year]-$[month]-$[day]_RetroArch_cia.7z",
           "location": "https://builldbot/3ds/nightly/",
           "output": "sdmc:/retroarch_nightly.7z",
           "message": "Downloading *filename"
       }
With $[year] $[month] $[day] being variables reflecting the current system date
This would give us the ability to check for the latest nightly build without updating the script itself.


#3
An other cool feature would be to be able to present the user with a BIG FAT warning before continuing certain update options. With the ability to cancel out.

Code:
   "Setup RetroArch": [
       {
           "type": "displayWarning",
           "message": "Full RetroArch install may take up to 48hours!/n Are you sure?"
       }
       {
           "type": "downloadFileDaily",
           "filename": "$[year]-$[month]-$[day]_RetroArch_cia.7z",
           "location": "https://builldbot/3ds/nightly/",
           "output": "sdmc:/retroarch_nightly.7z",
           "message": "Downloading *filename"
       }


#4
While it is possible to extract a single file from an archive, would it also be possible to extract an specified folder from an archive?


#5
Finally, before proceeding, is 7z supported?


My apologies for the long read and all the questions.

Edit:
GitHub feature request: https://github.com/Universal-Team/Universal-Updater/issues/8#issuecomment-569528592
 
Last edited by MrHuu,

SuperSaiyajinVoltZ

Member
OP
Newcomer
Joined
Nov 9, 2019
Messages
21
Trophies
0
Age
19
Location
Deutschland.
XP
165
Country
Germany
I still have a few other questions regarding some possible idea's for a retroarch script.

I would like create a few options:
- Update a single nightly cia or 3dsx core
- Update all nightly cia or 3dsx cores

- Update a single stable cia or 3dsx core
- Update all stable cia or 3dsx cores

- Setup full nightly retroarch cia or 3dsx (copy retroarch folder and all cores)
- Setup full stable retroarch cia or 3dsx (copy retroarch folder and all cores)

- Setup base folder nightly retroarch (only copy retroarch folder)
- Setup base folder stable retroarch (only copy retroarch folder)

Currently with 44 cores available, this would create 182 menu entry's.

Would this exceed the limits of Universal-Updater? If not,


#1
Would it be possible to create sub-menus?

Code:
Script ->
  Cia Builds(menu)->
    Download all cia cores
    Download single cia core(menu)->
      Download single core1
      Download single core2
      Download single core3

  3dsx Builds(menu)->
    Download all 3dsx cores
    Download single 3dsx core(menu)->
      Download single core1
      Download single core2
      Download single core3

#2
An other issue would be the the download links.

Retroarch builds are not available trough github or other means with an updated link to the latest builds.
The script would be required to be updated with static links to the available downloads.

This would be quite a pain with the naming convention used with the nightly builds: 2019-12-29_RetroArch_cia.7z

This can (and should) be automated, but for the nightly builds it would unfortunately result into updating the script at a daily basis.


Or, maybe, some sort of pre-defined variables could be used to create a variable filename

Code:
   "Install cia": [
       {
           "type": "downloadFileDaily",
           "filename": "$[year]-$[month]-$[day]_RetroArch_cia.7z",
           "location": "https://builldbot/3ds/nightly/",
           "output": "sdmc:/retroarch_nightly.7z",
           "message": "Downloading *filename"
       }
With $[year] $[month] $[day] being variables reflecting the current system date
This would give us the ability to check for the latest nightly build without updating the script itself.


#3
An other cool feature would be to be able to present the user with a BIG FAT warning before continuing certain update options. With the ability to cancel out.

Code:
   "Setup RetroArch": [
       {
           "type": "displayWarning",
           "message": "Full RetroArch install may take up to 48hours!/n Are you sure?"
       }
       {
           "type": "downloadFileDaily",
           "filename": "$[year]-$[month]-$[day]_RetroArch_cia.7z",
           "location": "https://builldbot/3ds/nightly/",
           "output": "sdmc:/retroarch_nightly.7z",
           "message": "Downloading *filename"
       }


#4
While it is possible to extract a single file from an archive, would it also be possible to extract an specified folder from an archive?


#5
Finally, before proceeding, is 7z supported?


My apologies for the long read and all the questions.

Edit:
GitHub feature request: https://github.com/Universal-Team/Universal-Updater/issues/8#issuecomment-569528592

#1 as already said in Github: Is it really worth? Most scripts are only 10 Entries or smaller.

#2 You can use something like this `"file": "GodMode9.*.zip",`, I'm not sure how to handle variables though yet.

#3 I currently have no real idea how to handle the message confirm/cancel function with the scripts. I can try it somehow though.

#4 Yes you can also extract Contents from a Folder already. I suggest Looking at the wiki of Universal-Updater for all current Script functions.

#5 Yes, 7z is supported.
 
  • Like
Reactions: MrHuu

SuperSaiyajinVoltZ

Member
OP
Newcomer
Joined
Nov 9, 2019
Messages
21
Trophies
0
Age
19
Location
Deutschland.
XP
165
Country
Germany
What is "UniStore"?

Sent from my SM-N960F using Tapatalk

It's a new implementation inside Universal-Updater for an app store, so People can also do other app stores like a NDS Homebrew app store. More About that is in our Discord Server for now. UniStore will be in the next release. :) (You can find the link to our discord Server in the Threadpost)
 
  • Like
Reactions: iGom
General chit-chat
Help Users
  • No one is chatting at the moment.
    KennieDaMeanie @ KennieDaMeanie: Might be the first dlc I actually buy