Linux: Use NSIS installer (#991)

* feat: Implement SKIP_SHORTCUT for installer

* feat: Update Linux install script to use NSIS-based installer instead

* feat: Wine detection for installer shortcut suppression

* fix: Revert WINEPREFIX back to XDG Home

Oops.

* fix(linux): Forgot to use the variable here

* fix(linux): Don't error if INSTALL_LOCATION exists but is empty

* fix(linux): "Program Files" has a space
This commit is contained in:
Regalia
2024-11-26 05:36:31 +01:00
committed by GitHub
parent 7c6778429d
commit ea5989ad2a
5 changed files with 42 additions and 15 deletions

View File

@@ -178,6 +178,7 @@ namespace VRCX
Application.SetCompatibleTextRenderingDefault(false);
logger.Info("{0} Starting...", Version);
logger.Debug("Wine support detection: {0}", Wine.GetIfWine());
ProcessMonitor.Instance.Init();
SQLiteLegacy.Instance.Init();

View File

@@ -35,6 +35,9 @@ namespace VRCX
private static void Install()
{
var setupArguments = "/S";
if (Wine.GetIfWine()) setupArguments += " /DISABLE_SHORTCUT=true";
try
{
File.Move(Update_Executable, VRCX_Setup_Executable);
@@ -43,7 +46,7 @@ namespace VRCX
StartInfo = new ProcessStartInfo
{
FileName = VRCX_Setup_Executable,
Arguments = "/S",
Arguments = setupArguments,
UseShellExecute = true,
WorkingDirectory = Program.AppDataDirectory
}

23
Dotnet/Wine.cs Normal file
View File

@@ -0,0 +1,23 @@
using System;
using System.Runtime.InteropServices;
namespace VRCX;
public static class Wine
{
[DllImport("ntdll.dll")]
private static extern IntPtr wine_get_version();
public static bool GetIfWine()
{
// wine_get_version should be guaranteed to exist exclusively in Wine envs,
// unlike some other suggestions like checking Wine registry keys
try
{
wine_get_version();
return true;
}
catch { return false; }
}
}