mirror of
https://github.com/Stremio/stremio-shell-ng.git
synced 2026-03-11 17:15:49 +00:00
This commit is contained in:
parent
0a08fed2cb
commit
b8a0345b0d
8 changed files with 240 additions and 7 deletions
BIN
bin-arm64/ffmpeg.exe
Normal file
BIN
bin-arm64/ffmpeg.exe
Normal file
Binary file not shown.
BIN
bin-arm64/ffprobe.exe
Normal file
BIN
bin-arm64/ffprobe.exe
Normal file
Binary file not shown.
BIN
bin-arm64/stremio-runtime.exe
Normal file
BIN
bin-arm64/stremio-runtime.exe
Normal file
Binary file not shown.
21
build-arm64.ps1
Normal file
21
build-arm64.ps1
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
param (
|
||||||
|
[String]$pw = $( Read-Host "Password" )
|
||||||
|
)
|
||||||
|
|
||||||
|
$thread = Start-ThreadJob -InputObject ($pw) -ScriptBlock {
|
||||||
|
$wshell = New-Object -ComObject wscript.shell;
|
||||||
|
$pw = "$($input)~"
|
||||||
|
while ($true) {
|
||||||
|
while ( -not $wshell.AppActivate("Token Logon")) {
|
||||||
|
Start-Sleep 1
|
||||||
|
}
|
||||||
|
Start-Sleep 1
|
||||||
|
$wshell.SendKeys($pw, $true)
|
||||||
|
Start-Sleep 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cargo build --release --target aarch64-pc-windows-msvc
|
||||||
|
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" /DSIGN "/Sstremiosign=`$qsigntool.exe`$q sign /fd SHA256 /t http://timestamp.digicert.com /n `$qSmart Code OOD`$q `$f" "setup\Stremio-arm64.iss"
|
||||||
|
|
||||||
|
Stop-Job -Job $thread
|
||||||
9
build.rs
9
build.rs
|
|
@ -42,10 +42,7 @@ fn main() {
|
||||||
};
|
};
|
||||||
println!("cargo:rustc-env=ARCH={}", arch);
|
println!("cargo:rustc-env=ARCH={}", arch);
|
||||||
println!("cargo:rustc-link-arg={}", flags);
|
println!("cargo:rustc-link-arg={}", flags);
|
||||||
println!("cargo:rerun-if-changed={}", archive);
|
let archive = fs::read(archive).unwrap();
|
||||||
{
|
let target_dir = PathBuf::from(".");
|
||||||
let archive = fs::read(archive).unwrap();
|
zip_extract::extract(Cursor::new(archive), &target_dir, true).ok();
|
||||||
let target_dir = PathBuf::from(".");
|
|
||||||
zip_extract::extract(Cursor::new(archive), &target_dir, true).ok();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
BIN
images/StremioRuntime.ico
Normal file
BIN
images/StremioRuntime.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 105 KiB |
215
setup/Stremio-arm64.iss
Normal file
215
setup/Stremio-arm64.iss
Normal file
|
|
@ -0,0 +1,215 @@
|
||||||
|
; Script generated by the Inno Setup Script Wizard.
|
||||||
|
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
||||||
|
|
||||||
|
#define MyAppName "Stremio"
|
||||||
|
#define MyAppExeName "stremio-shell-ng.exe"
|
||||||
|
#define MyAppExeLocation SourcePath + "..\target\aarch64-pc-windows-msvc\release\" + MyAppExeName
|
||||||
|
#define MyAppVersion() GetVersionComponents(MyAppExeLocation, Local[0], Local[1], Local[2], Local[3]), \
|
||||||
|
Str(Local[0]) + "." + Str(Local[1]) + "." + Str(Local[2])
|
||||||
|
|
||||||
|
#define MyAppPublisher "Smart Code OOD"
|
||||||
|
#define MyAppCopyright "Copyright © " + GetDateTimeString('yyyy', '', '') + " " + MyAppPublisher
|
||||||
|
#define MyAppURL "https://www.stremio.com/"
|
||||||
|
#define MyAppGoodbyeURL "https://www.strem.io/goodbye"
|
||||||
|
#define AssocTorrentExt ".torrent"
|
||||||
|
#define AssocTorrentKey StringChange(MyAppName, " ", "") + AssocTorrentExt
|
||||||
|
#define AssocTorrentDesc "Bittorrent seed file"
|
||||||
|
|
||||||
|
#define public Dependency_NoExampleSetup
|
||||||
|
#include "CodeDependencies.iss"
|
||||||
|
|
||||||
|
[Setup]
|
||||||
|
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
|
||||||
|
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
|
||||||
|
AppId={{DD3870DA-AF3C-4C73-B010-72944AB610C6}
|
||||||
|
ArchitecturesAllowed=arm64
|
||||||
|
AppName={#MyAppName}
|
||||||
|
AppVersion={#MyAppVersion}
|
||||||
|
AppPublisher={#MyAppPublisher}
|
||||||
|
AppCopyright={#MyAppCopyright}
|
||||||
|
AppPublisherURL={#MyAppURL}
|
||||||
|
AppSupportURL={#MyAppURL}
|
||||||
|
AppUpdatesURL={#MyAppURL}
|
||||||
|
DefaultDirName={autopf}\{#MyAppName}
|
||||||
|
SetupMutex=StremioShellNgSetupsMutex,Global\StremioShellNgSetupsMutex
|
||||||
|
; Remove the following line to run in administrative install mode (install for all users.)
|
||||||
|
PrivilegesRequired=lowest
|
||||||
|
DisableReadyPage=yes
|
||||||
|
DisableDirPage=yes
|
||||||
|
DisableProgramGroupPage=yes
|
||||||
|
; DisableFinishedPage=yes
|
||||||
|
ChangesAssociations=yes
|
||||||
|
OutputBaseFilename={#MyAppName}Setup-v{#MyAppVersion}_arm64
|
||||||
|
OutputDir=..
|
||||||
|
Compression=lzma
|
||||||
|
SolidCompression=yes
|
||||||
|
WizardStyle=modern
|
||||||
|
LanguageDetectionMethod=uilanguage
|
||||||
|
ShowLanguageDialog=auto
|
||||||
|
CloseApplications=yes
|
||||||
|
WizardImageFile={#SourcePath}..\images\windows-installer.bmp
|
||||||
|
WizardSmallImageFile={#SourcePath}..\images\windows-installer-header.bmp
|
||||||
|
SetupIconFile={#SourcePath}..\images\stremio.ico
|
||||||
|
UninstallDisplayIcon={app}\{#MyAppExeName},0
|
||||||
|
#ifdef SIGN
|
||||||
|
SignTool=stremiosign
|
||||||
|
SignedUninstaller=yes
|
||||||
|
#endif
|
||||||
|
|
||||||
|
[Code]
|
||||||
|
function InitializeSetup: Boolean;
|
||||||
|
begin
|
||||||
|
Dependency_AddWebView2;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function ShouldSkipPage(PageID: Integer): Boolean;
|
||||||
|
begin
|
||||||
|
{ Hide finish page if run app is selected }
|
||||||
|
if (PageID = wpFinished) and WizardIsTaskSelected('runapp') then
|
||||||
|
Result := True
|
||||||
|
else
|
||||||
|
Result := False;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure CurPageChanged(CurPageID: Integer);
|
||||||
|
begin
|
||||||
|
case (CurPageID) of
|
||||||
|
wpSelectTasks: WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall);
|
||||||
|
wpFinished: WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish);
|
||||||
|
else
|
||||||
|
WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure CurStepChanged(CurStep: TSetupStep);
|
||||||
|
var
|
||||||
|
ResultCode: Integer;
|
||||||
|
begin
|
||||||
|
if (CurStep = ssDone) and WizardIsTaskSelected('runapp') then
|
||||||
|
ExecAsOriginalUser(ExpandConstant('{app}\{#MyAppExeName}'), '', '', SW_SHOW, ewNoWait, ResultCode);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
|
||||||
|
var
|
||||||
|
ErrorCode: Integer;
|
||||||
|
begin
|
||||||
|
case (CurUninstallStep) of
|
||||||
|
usPostUninstall: if MsgBox(ExpandConstant('{cm:RemoveDataFolder}'), mbConfirmation, MB_YESNO or MB_DEFBUTTON2) = IDYES then
|
||||||
|
DelTree(ExpandConstant('{app}'), True, True, True);
|
||||||
|
usDone: ShellExec('', ExpandConstant('{#MyAppGoodbyeURL}'), '', '', SW_SHOW, ewNoWait, ErrorCode);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
[Languages]
|
||||||
|
Name: "english"; MessagesFile: "compiler:Default.isl"
|
||||||
|
Name: "armenian"; MessagesFile: "compiler:Languages\Armenian.isl"
|
||||||
|
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
|
||||||
|
Name: "bulgarian"; MessagesFile: "compiler:Languages\Bulgarian.isl"
|
||||||
|
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
|
||||||
|
Name: "corsican"; MessagesFile: "compiler:Languages\Corsican.isl"
|
||||||
|
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
|
||||||
|
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
|
||||||
|
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
|
||||||
|
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
|
||||||
|
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
|
||||||
|
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
|
||||||
|
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
|
||||||
|
Name: "icelandic"; MessagesFile: "compiler:Languages\Icelandic.isl"
|
||||||
|
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
|
||||||
|
Name: "japanese"; MessagesFile: "compiler:Languages\Japanese.isl"
|
||||||
|
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
|
||||||
|
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
|
||||||
|
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
|
||||||
|
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
|
||||||
|
Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl"
|
||||||
|
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
|
||||||
|
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"
|
||||||
|
Name: "turkish"; MessagesFile: "compiler:Languages\Turkish.isl"
|
||||||
|
Name: "ukrainian"; MessagesFile: "compiler:Languages\Ukrainian.isl"
|
||||||
|
|
||||||
|
[CustomMessages]
|
||||||
|
RemoveDataFolder=Remove all data and configuration?
|
||||||
|
english.RemoveDataFolder=Remove all data and configuration?
|
||||||
|
armenian.RemoveDataFolder=Հեռացնե՞լ բոլոր տվյալները և կոնֆիգուրացիան:
|
||||||
|
brazilianportuguese.RemoveDataFolder=Remover todos os dados e configuração?
|
||||||
|
bulgarian.RemoveDataFolder=Премахване на всички данни и конфигурация?
|
||||||
|
catalan.RemoveDataFolder=Vols suprimir totes les dades i la configuració?
|
||||||
|
corsican.RemoveDataFolder=Eliminate tutti i dati è a cunfigurazione?
|
||||||
|
czech.RemoveDataFolder=Odebrat všechna data a konfiguraci?
|
||||||
|
danish.RemoveDataFolder=Remove all data and configuration?
|
||||||
|
dutch.RemoveDataFolder=Remove all data and configuration?
|
||||||
|
finnish.RemoveDataFolder=Poistetaanko kaikki tiedot ja asetukset?
|
||||||
|
french.RemoveDataFolder=Supprimer toutes les données et la configuration ?
|
||||||
|
german.RemoveDataFolder=Alle Daten und Konfiguration entfernen?
|
||||||
|
hebrew.RemoveDataFolder=Remove all data and configuration?
|
||||||
|
icelandic.RemoveDataFolder=Fjarlægja öll gögn og stillingar?
|
||||||
|
italian.RemoveDataFolder=Rimuovere tutti i dati e la configurazione?
|
||||||
|
japanese.RemoveDataFolder=すべてのデータと構成を削除しますか?
|
||||||
|
norwegian.RemoveDataFolder=Vil du fjerne all data og konfigurasjon?
|
||||||
|
polish.RemoveDataFolder=Usunąć wszystkie dane i konfigurację?
|
||||||
|
portuguese.RemoveDataFolder=Remover todos os dados e configuração?
|
||||||
|
russian.RemoveDataFolder=Удалить все данные и конфигурацию?
|
||||||
|
slovak.RemoveDataFolder=Chcete odstrániť všetky údaje a konfiguráciu?
|
||||||
|
slovenian.RemoveDataFolder=Želite odstraniti vse podatke in konfiguracijo?
|
||||||
|
spanish.RemoveDataFolder=¿Eliminar todos los datos y la configuración?
|
||||||
|
turkish.RemoveDataFolder=Tüm veriler ve yapılandırma kaldırılsın mı?
|
||||||
|
ukrainian.RemoveDataFolder=Видалити всі дані та конфігурацію?
|
||||||
|
|
||||||
|
[Tasks]
|
||||||
|
Name: "runapp"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"
|
||||||
|
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"
|
||||||
|
;Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||||
|
Name: "assoctorrent"; Description: "Associate {#MyAppName} with .torrent files"
|
||||||
|
|
||||||
|
[Files]
|
||||||
|
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
||||||
|
Source: "{#MyAppExeLocation}"; DestDir: "{app}"; Flags: ignoreversion signonce
|
||||||
|
Source: "{#SourcePath}..\libmpv-2.dll"; DestDir: "{app}"; Flags: ignoreversion signonce
|
||||||
|
Source: "{#SourcePath}..\bin-arm64\ffmpeg.exe"; DestDir: "{app}"; Flags: ignoreversion signonce
|
||||||
|
Source: "{#SourcePath}..\bin-arm64\ffprobe.exe"; DestDir: "{app}"; Flags: ignoreversion signonce
|
||||||
|
Source: "{#SourcePath}..\bin-arm64\stremio-runtime.exe"; DestDir: "{app}"; Flags: ignoreversion signonce
|
||||||
|
Source: "{#SourcePath}..\server.js"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
|
|
||||||
|
[Registry]
|
||||||
|
; Associate .torrent files if assoctorrent task is selected
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#AssocTorrentExt}}\OpenWithProgids"; ValueType: string; ValueName: "{#AssocTorrentKey}"; ValueData: ""; Flags: uninsdeletevalue; Tasks: assoctorrent
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#AssocTorrentKey}"; ValueType: string; ValueName: ""; ValueData: "{#AssocTorrentDesc}"; Flags: uninsdeletekey; Tasks: assoctorrent
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#AssocTorrentKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey; Tasks: assoctorrent
|
||||||
|
Root: HKA; Subkey: "Software\Classes\{#AssocTorrentKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey; Tasks: assoctorrent
|
||||||
|
|
||||||
|
; stremio: protocol
|
||||||
|
Root: HKA; Subkey: "Software\Classes\stremio"; ValueType: string; ValueName: ""; ValueData: "URL:Stremio Protocol"; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\stremio"; ValueType: string; ValueName: "URL Protocol"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\stremio\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\stremio\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
|
||||||
|
|
||||||
|
; magnet: protocol
|
||||||
|
Root: HKA; Subkey: "Software\Classes\magnet"; ValueType: string; ValueName: ""; ValueData: "URL:BitTorrent magnet"; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\magnet"; ValueType: string; ValueName: "URL Protocol"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\magnet\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\magnet\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""; Flags: uninsdeletekey
|
||||||
|
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".torrent"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".avi"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".asf"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".mkv"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".mp4"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".mov"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".ogg"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".ogv"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".wmv"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".srt"; ValueData: ""; Flags: uninsdeletekey
|
||||||
|
|
||||||
|
[Icons]
|
||||||
|
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||||
|
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
||||||
|
|
||||||
|
; This is used if the desktop shortcut is created by the [run] section.
|
||||||
|
; [UninstallDelete]
|
||||||
|
; Type: files; Name: "{autodesktop}\{#MyAppName}.lnk"
|
||||||
|
|
||||||
|
; We don't use the run section as the .torrent association is very hard to handle
|
||||||
|
; [Run]
|
||||||
|
; Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
||||||
|
; Filename: "cmd"; Parameters: "/c copy ""{autoprograms}\{#MyAppName}.lnk"" ""{autodesktop}"""; Description: "{cm:CreateDesktopIcon}"; Flags: postinstall skipifsilent shellexec runhidden waituntilterminated runascurrentuser
|
||||||
|
|
@ -38,7 +38,7 @@ DisableDirPage=yes
|
||||||
DisableProgramGroupPage=yes
|
DisableProgramGroupPage=yes
|
||||||
; DisableFinishedPage=yes
|
; DisableFinishedPage=yes
|
||||||
ChangesAssociations=yes
|
ChangesAssociations=yes
|
||||||
OutputBaseFilename={#MyAppName}Setup-v{#MyAppVersion}
|
OutputBaseFilename={#MyAppName}Setup-v{#MyAppVersion}_x64
|
||||||
OutputDir=..
|
OutputDir=..
|
||||||
Compression=lzma
|
Compression=lzma
|
||||||
SolidCompression=yes
|
SolidCompression=yes
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue