From 810ef5fb257d3926817b18bf67b409f5290c19ee Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Mon, 12 Jul 2021 10:11:01 -0400 Subject: [PATCH 01/12] src: Fix Linux build Syncs the parameters between the Windows and Linux create_shortcut functions. Makes the install_desktop_shortcut only work on Windows where it has create_desktop_shortcut implemented. --- src/native/mod.rs | 1 + src/tasks/install_desktop_shortcut.rs | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/native/mod.rs b/src/native/mod.rs index 967b7a9..5f7e13d 100644 --- a/src/native/mod.rs +++ b/src/native/mod.rs @@ -314,6 +314,7 @@ mod natives { target: &str, args: &str, working_dir: &str, + exe_path: &str, ) -> Result { // FIXME: no icon will be shown since no icon is provided let data_local_dir = dirs::data_local_dir(); diff --git a/src/tasks/install_desktop_shortcut.rs b/src/tasks/install_desktop_shortcut.rs index 58cb797..f4d71f3 100644 --- a/src/tasks/install_desktop_shortcut.rs +++ b/src/tasks/install_desktop_shortcut.rs @@ -11,6 +11,7 @@ use config::PackageDescription; use logging::LoggingErrors; +#[cfg(windows)] use native::create_desktop_shortcut; pub struct InstallDesktopShortcutTask { @@ -70,6 +71,7 @@ impl Task for InstallDesktopShortcutTask { "maintenancetool" }; + #[cfg(windows)] for shortcut in package.shortcuts { let tool_path = path.join(platform_extension); let tool_path = tool_path From 825e9cc1c3343700cc4195ab37763d09863315a4 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sat, 17 Jul 2021 04:04:09 -0400 Subject: [PATCH 02/12] general: Fix Linux shortcuts Makes them function even if it's missing the icon. --- src/native/mod.rs | 4 ++-- src/tasks/install_desktop_shortcut.rs | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/native/mod.rs b/src/native/mod.rs index 5f7e13d..6714007 100644 --- a/src/native/mod.rs +++ b/src/native/mod.rs @@ -333,8 +333,8 @@ mod natives { }; path.push(format!("{}.desktop", slugify(name))); // file name let desktop_file = format!( - "[Desktop Entry]\nName={}\nExec=\"{}\" {}\nComment={}\nPath={}\n", - name, target, args, description, working_dir + "[Desktop Entry]\nType=Application\nName={}\nExec=\"{}\" {}\nComment={}\nPath={}\nIcon=yuzu\n", + name, target, args, description, working_dir ); let desktop_f = File::create(path); let mut desktop_f = match desktop_f { diff --git a/src/tasks/install_desktop_shortcut.rs b/src/tasks/install_desktop_shortcut.rs index f4d71f3..2347bb1 100644 --- a/src/tasks/install_desktop_shortcut.rs +++ b/src/tasks/install_desktop_shortcut.rs @@ -13,6 +13,8 @@ use logging::LoggingErrors; #[cfg(windows)] use native::create_desktop_shortcut; +#[cfg(target_os = "linux")] +use native::create_shortcut; pub struct InstallDesktopShortcutTask { pub name: String, @@ -71,7 +73,6 @@ impl Task for InstallDesktopShortcutTask { "maintenancetool" }; - #[cfg(windows)] for shortcut in package.shortcuts { let tool_path = path.join(platform_extension); let tool_path = tool_path @@ -83,6 +84,7 @@ impl Task for InstallDesktopShortcutTask { .to_str() .log_expect("Unable to build shortcut metadata (exe)"); + #[cfg(windows)] installed_files.push(create_desktop_shortcut( &shortcut.name, &shortcut.description, @@ -92,6 +94,17 @@ impl Task for InstallDesktopShortcutTask { &starting_dir, exe_path, )?); + + #[cfg(target_os = "linux")] + installed_files.push(create_shortcut( + &shortcut.name, + &shortcut.description, + tool_path, + // TODO: Send by list + &format!("--launcher \"{}\"", exe_path), + &starting_dir, + exe_path, + )?); } // Update the installed packages shortcuts information in the database From 2958c583afad8946351d49d7cd9600229cd5548b Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sat, 17 Jul 2021 04:46:23 -0400 Subject: [PATCH 03/12] views: Stub things that don't work or don't apply to Linux Icons don't work in Linux. Start menu is not a Linux thing. Automatically scrolls to the verify token button in the Authentication view. --- src/installer.rs | 9 +++++++++ ui/src/views/AuthenticationView.vue | 9 ++++++++- ui/src/views/CompleteView.vue | 10 +++++----- ui/src/views/SelectPackages.vue | 2 +- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/installer.rs b/src/installer.rs index 4738b4e..2861d3a 100644 --- a/src/installer.rs +++ b/src/installer.rs @@ -97,6 +97,7 @@ pub struct InstallerFramework { // If we just completed an uninstall, and we should clean up after ourselves. pub burn_after_exit: bool, pub launcher_path: Option, + pub is_windows: bool, } /// Contains basic properties on the status of the session. Subset of InstallationFramework. @@ -453,6 +454,10 @@ impl InstallerFramework { is_launcher: false, burn_after_exit: false, launcher_path: None, + #[cfg(windows)] + is_windows: true, + #[cfg(not(windows))] + is_windows: false, } } @@ -480,6 +485,10 @@ impl InstallerFramework { is_launcher: false, burn_after_exit: false, launcher_path: None, + #[cfg(windows)] + is_windows: true, + #[cfg(not(windows))] + is_windows: false, }) } } diff --git a/ui/src/views/AuthenticationView.vue b/ui/src/views/AuthenticationView.vue index 125c5e0..daaa028 100644 --- a/ui/src/views/AuthenticationView.vue +++ b/ui/src/views/AuthenticationView.vue @@ -65,7 +65,7 @@

-
+

Verify Token

@@ -166,6 +166,13 @@ export default { error: function() { this.verification_opened = true; } + }, + directives: { + scroll: { + inserted: function (el) { + el.scrollIntoView() + } + } } } diff --git a/ui/src/views/CompleteView.vue b/ui/src/views/CompleteView.vue index 60c3895..4e037c9 100644 --- a/ui/src/views/CompleteView.vue +++ b/ui/src/views/CompleteView.vue @@ -3,7 +3,7 @@

You have been moved to the new, single version of {{ $root.$data.attrs.name }}.

-

You can find your installed applications in your start menu - if you were in the middle of something, just reattempt.

+

You can find your installed applications in your applications menu - if you were in the middle of something, just reattempt.

Where yuzu is installed
@@ -11,20 +11,20 @@

{{ $root.$data.attrs.name }} has been updated.

-

You can find your installed applications in your start menu.

+

You can find your installed applications in your applications menu.

{{ $root.$data.attrs.name }} is already up to date!

-

You can find your installed applications in your start menu.

+

You can find your installed applications in your applications menu.

Thanks for installing {{ $root.$data.attrs.name }}!

-

You can find your installed applications in your start menu.

+

You can find your installed applications in your applications menu.


- Where yuzu is installed + Where yuzu is installed

{{ $root.$data.attrs.name }} has been uninstalled.

diff --git a/ui/src/views/SelectPackages.vue b/ui/src/views/SelectPackages.vue index 9c376fc..1bc9de1 100644 --- a/ui/src/views/SelectPackages.vue +++ b/ui/src/views/SelectPackages.vue @@ -12,7 +12,7 @@ (installed)
- +

{{ Lpackage.description }}

From 4ed1ffb5c377f1ebb56f5254c75e2219b716f6ab Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sat, 17 Jul 2021 17:25:39 -0400 Subject: [PATCH 04/12] general: Get ready for Linux release Creates a config for Linux based on config.windows.v10.toml, then points to it. We also remove the icon stub. --- bootstrap.linux.toml | 2 +- config.linux.v3.toml | 58 +++++++++++++++++++++++++++++++++ ui/src/views/SelectPackages.vue | 2 +- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 config.linux.v3.toml diff --git a/bootstrap.linux.toml b/bootstrap.linux.toml index 6fddf6a..fc50fa8 100644 --- a/bootstrap.linux.toml +++ b/bootstrap.linux.toml @@ -1,2 +1,2 @@ name = "yuzu" -target_url = "https://raw.githubusercontent.com/yuzu-emu/liftinstall/master/config.linux.v2.toml" +target_url = "https://raw.githubusercontent.com/yuzu-emu/liftinstall/master/config.linux.v3.toml" diff --git a/config.linux.v3.toml b/config.linux.v3.toml new file mode 100644 index 0000000..c26b8c9 --- /dev/null +++ b/config.linux.v3.toml @@ -0,0 +1,58 @@ +installing_message = "Reminder: yuzu is an experimental emulator. Stuff will break!" +hide_advanced = true + +[authentication] +# Base64 encoded version of the public key for validating the JWT token. Must be in DER format +pub_key_base64 = "MIIBCgKCAQEAs5K6s49JVV9LBMzDrkORsoPSYsv1sCXDtxjp4pn8p0uPSvJAsbNNmdIgCjfSULzbHLM28MblnI4zYP8ZgKtkjdg+Ic5WQbS5iBAkf18zMafpOrotTArLsgZSmUfNYt0SOiN17D+sq/Ov/CKXRM9CttKkEbanBTVqkx7sxsHVbkI6tDvkboSaNeVPHzHlfAbvGrUo5cbAFCB/KnRsoxr+g7jLKTxU1w4xb/pIs91h80AXV/yZPXL6ItPM3/0noIRXjmoeYWf2sFQaFALNB2Kef0p6/hoHYUQP04ZSIL3Q+v13z5X2YJIlI4eLg+iD25QYm9V8oP3+Xro4vd47a0/maQIDAQAB" +# URL to authenticate against. This must return a JWT token with their permissions and a custom claim patreonInfo with the following structure +# "patreonInfo": { "linked": false, "activeSubscription": false } +# If successful, the frontend will use this JWT token as a Bearer Authentication when requesting the binaries to download +auth_url = "https://api.yuzu-emu.org/jwt/installer/" + [authentication.validation] + iss = "citra-core" + aud = "installer" + +[[packages]] +name = "yuzu Early Access" +description = "Preview release with the newest features for the supporters." +icon = "thicc_logo_installer__ea_shadow.png" +requires_authorization = true +# puts a "new" ribbon the package select +is_new = true + [packages.extended_description] + no_action_description = "Thank you for your support!" + # Displayed when the package has no authentication for the user + need_authentication_description = "Click here to sign in with your yuzu account for Early Access" + # Displayed when the package has an authentication, but the user has not linked their account + need_link_description = "You are signed in, but you need to link your Patreon account! Click here for more details" + # Displayed when the package has an authentication, but the user has not linked their account + need_subscription_description = "You are signed in, but you need to link your Patreon account! Click here for more details" + # Displayed when the package has an authentication, but the user has not linked their account + need_reward_tier_description = "You are signed in, but are not backing an eligible reward tier! Click here for more details" + + [packages.source] + name = "patreon" + match = "^yuzu-linux-[0-9]*-[0-9a-f]*.tar.xz$" + [packages.source.config] + repo = "earlyaccess" + [[packages.shortcuts]] + name = "yuzu Early Access" + relative_path = "yuzu-linux-early-access/yuzu-early-access.AppImage" + description = "Launch yuzu Early Access" + + +[[packages]] +name = "yuzu" +description = "Includes frequent updates to yuzu with all the latest reviewed and tested features." +icon = "thicc_logo_installer_shadow.png" +default = true + [packages.source] + name = "github" + match = "^yuzu-linux-[0-9]*-[0-9a-f]*.tar.xz$" + [packages.source.config] + repo = "yuzu-emu/yuzu-mainline" + [[packages.shortcuts]] + name = "yuzu" + relative_path = "yuzu-linux-mainline/yuzu" + description = "Launch yuzu" + diff --git a/ui/src/views/SelectPackages.vue b/ui/src/views/SelectPackages.vue index 1bc9de1..9c376fc 100644 --- a/ui/src/views/SelectPackages.vue +++ b/ui/src/views/SelectPackages.vue @@ -12,7 +12,7 @@ (installed)
- +

{{ Lpackage.description }}

From e54199ad6fde0f07b8a42d720c1d13457cdf5877 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sat, 17 Jul 2021 17:53:18 -0400 Subject: [PATCH 05/12] SelectPackages: Desktop shortcut is for Windows --- ui/src/views/SelectPackages.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/src/views/SelectPackages.vue b/ui/src/views/SelectPackages.vue index 9c376fc..cdd25fb 100644 --- a/ui/src/views/SelectPackages.vue +++ b/ui/src/views/SelectPackages.vue @@ -23,9 +23,12 @@

Install Options

- + Create Desktop Shortcut + + Create Shortcut +
From 061944079b73339f0220fe0442b42bdf236ea623 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sat, 17 Jul 2021 01:43:33 -0400 Subject: [PATCH 06/12] travis: Build using the linux-liftinstall Docker container travis: Build in release mode travis: Use yuzu user for building travis: Fix permissions resetting --- .travis/build.sh | 11 +---------- .travis/exec.sh | 6 ++++++ 2 files changed, 7 insertions(+), 10 deletions(-) create mode 100644 .travis/exec.sh diff --git a/.travis/build.sh b/.travis/build.sh index 92bc3d2..54842c5 100644 --- a/.travis/build.sh +++ b/.travis/build.sh @@ -1,15 +1,6 @@ #!/usr/bin/env bash cd /liftinstall || exit 1 -# setup NodeJS -curl -sL https://deb.nodesource.com/setup_12.x | bash - -# setup Yarn -curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - -echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list - -apt-get update -apt-get install -y libwebkit2gtk-4.0-dev libssl-dev nodejs yarn - yarn --cwd ui -cargo build +cargo build --release diff --git a/.travis/exec.sh b/.travis/exec.sh new file mode 100644 index 0000000..4609bfb --- /dev/null +++ b/.travis/exec.sh @@ -0,0 +1,6 @@ +#!/bin/bash -ex + +# the UID for the container yuzu user is 1027 +sudo chown -R 1027 ./ +docker run -v $(pwd):/liftinstall -t yuzuemu/build-environments:linux-liftinstall /bin/bash /liftinstall/.travis/build.sh +sudo chown -R $(id -u):$(id -g) ./ From 95ee7a1739158ef00894b56577da48f162bbe808 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sun, 25 Jul 2021 16:18:27 -0400 Subject: [PATCH 07/12] native: Linux shortcut specific to maintenance tool --- src/native/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/native/mod.rs b/src/native/mod.rs index 6714007..46e61b9 100644 --- a/src/native/mod.rs +++ b/src/native/mod.rs @@ -331,7 +331,7 @@ mod natives { )); } }; - path.push(format!("{}.desktop", slugify(name))); // file name + path.push(format!("yuzu-maintenance-tool_{}.desktop", slugify(name))); // file name let desktop_file = format!( "[Desktop Entry]\nType=Application\nName={}\nExec=\"{}\" {}\nComment={}\nPath={}\nIcon=yuzu\n", name, target, args, description, working_dir From 77a26c149617ca0cdc30110aa8287c4e0fea1a46 Mon Sep 17 00:00:00 2001 From: lat9nq Date: Fri, 15 Oct 2021 19:18:56 -0400 Subject: [PATCH 08/12] Update src/tasks/install_desktop_shortcut.rs Co-authored-by: liushuyu --- src/tasks/install_desktop_shortcut.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tasks/install_desktop_shortcut.rs b/src/tasks/install_desktop_shortcut.rs index 2347bb1..246a41a 100644 --- a/src/tasks/install_desktop_shortcut.rs +++ b/src/tasks/install_desktop_shortcut.rs @@ -100,8 +100,7 @@ impl Task for InstallDesktopShortcutTask { &shortcut.name, &shortcut.description, tool_path, - // TODO: Send by list - &format!("--launcher \"{}\"", exe_path), + &["--launcher", exe_path], &starting_dir, exe_path, )?); From f809e6cb23048ae975a6b326d9853b5d19ad52c9 Mon Sep 17 00:00:00 2001 From: lat9nq Date: Fri, 15 Oct 2021 19:19:00 -0400 Subject: [PATCH 09/12] Update src/native/mod.rs Co-authored-by: liushuyu --- src/native/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/native/mod.rs b/src/native/mod.rs index 46e61b9..6ca049c 100644 --- a/src/native/mod.rs +++ b/src/native/mod.rs @@ -312,7 +312,7 @@ mod natives { name: &str, description: &str, target: &str, - args: &str, + args: &[&str], working_dir: &str, exe_path: &str, ) -> Result { From e6600e3b177062f947e8d452dc5d4cdf475f11ea Mon Sep 17 00:00:00 2001 From: lat9nq Date: Thu, 28 Jul 2022 16:39:35 -0400 Subject: [PATCH 10/12] general: Housekeeping Keep up with updates to the compiler. --- .travis/exec.sh | 4 +--- src/native/mod.rs | 2 +- src/tasks/install_desktop_shortcut.rs | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.travis/exec.sh b/.travis/exec.sh index 4609bfb..0ff8eff 100644 --- a/.travis/exec.sh +++ b/.travis/exec.sh @@ -1,6 +1,4 @@ #!/bin/bash -ex # the UID for the container yuzu user is 1027 -sudo chown -R 1027 ./ -docker run -v $(pwd):/liftinstall -t yuzuemu/build-environments:linux-liftinstall /bin/bash /liftinstall/.travis/build.sh -sudo chown -R $(id -u):$(id -g) ./ +docker run -u root -v $(pwd):/liftinstall -t yuzuemu/build-environments:linux-liftinstall /bin/bash /liftinstall/.travis/build.sh diff --git a/src/native/mod.rs b/src/native/mod.rs index 6ca049c..46e61b9 100644 --- a/src/native/mod.rs +++ b/src/native/mod.rs @@ -312,7 +312,7 @@ mod natives { name: &str, description: &str, target: &str, - args: &[&str], + args: &str, working_dir: &str, exe_path: &str, ) -> Result { diff --git a/src/tasks/install_desktop_shortcut.rs b/src/tasks/install_desktop_shortcut.rs index 246a41a..74399b5 100644 --- a/src/tasks/install_desktop_shortcut.rs +++ b/src/tasks/install_desktop_shortcut.rs @@ -100,7 +100,7 @@ impl Task for InstallDesktopShortcutTask { &shortcut.name, &shortcut.description, tool_path, - &["--launcher", exe_path], + &format!("--launcher \"{}\"", exe_path), &starting_dir, exe_path, )?); From 8c795396ebb187cca19065bab9f8aa2ee17e3b0a Mon Sep 17 00:00:00 2001 From: lat9nq Date: Thu, 28 Jul 2022 16:47:42 -0400 Subject: [PATCH 11/12] installer: Use an inline expression for is_windows Co-authored-by: liushuyu --- src/installer.rs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/installer.rs b/src/installer.rs index 2861d3a..c2be519 100644 --- a/src/installer.rs +++ b/src/installer.rs @@ -454,10 +454,7 @@ impl InstallerFramework { is_launcher: false, burn_after_exit: false, launcher_path: None, - #[cfg(windows)] - is_windows: true, - #[cfg(not(windows))] - is_windows: false, + is_windows: cfg!(windows), } } @@ -485,10 +482,7 @@ impl InstallerFramework { is_launcher: false, burn_after_exit: false, launcher_path: None, - #[cfg(windows)] - is_windows: true, - #[cfg(not(windows))] - is_windows: false, + is_windows: cfg!(windows), }) } } From 85ed6275f8a32cff142000e7c2cd4a8ddbf5525e Mon Sep 17 00:00:00 2001 From: lat9nq Date: Sun, 31 Jul 2022 19:47:29 -0400 Subject: [PATCH 12/12] linux v3: Use AppImage for Mainline The regular yuzu executable is not anywhere near as guaranteed to run as the AppImage is. --- config.linux.v3.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.linux.v3.toml b/config.linux.v3.toml index c26b8c9..ca47652 100644 --- a/config.linux.v3.toml +++ b/config.linux.v3.toml @@ -53,6 +53,6 @@ default = true repo = "yuzu-emu/yuzu-mainline" [[packages.shortcuts]] name = "yuzu" - relative_path = "yuzu-linux-mainline/yuzu" + relative_path = "yuzu-linux-mainline/yuzu-mainline.AppImage" description = "Launch yuzu"