Store Apps entkapseln

Apps starten nicht, oder lassen sich nicht installieren? Dann stell deine Frage hier.
Antworten
Sekkei
Neuling
Neuling
Beiträge: 6
Registriert: 25.04.2019, 13:10

Store Apps entkapseln

Beitrag von Sekkei » 06.02.2021, 16:16

Ich versuche momentan meine store apps in normale Portable programme umzuwandeln.
Schritt eins ist erstmal alle fehlenden .dlls auf den system zu finden und sie neben die .exe zu legen. Schritt zwei und hier wirds schon schwieriger , das ausführen ohne store über die shell ; Der befehl "start shell:AppsFolder\<name>_<ID>!<startname>" sollte auf allen neuen windows versionen funktionieren. Allerdings gefällt mir garnicht das ich dazu shell:AppFolder benutzen muss ich kann weder einen relativen pfad noch andere shell ordner benutzen.
Bsw ist "shell:MyComputerFolder\C:\home\apps" ein valider pfad aber es findet dort nicht die app.
Zu dem macht mir der noch nichtmal angefangende schritt drei bereits sorgen: die <ID> wird sicher bei der installation registriert und damit random erstellt, also würde ich selbst wenn ich es schaffe es local zu verschieben, nicht in der lage sein diese auf anderen winows installationen zu benutzen ohne noch register einträge zu erstellen ?

Man sollte erwähnen das eigentlich AppsFolder etwas gutes ist wenn man sich überlegt wie selbst bestimmt sich manche apps in die tiefen des OS einnisten. Was hat ein browser in AppsData zu suchen ? Oder überhaupt programme!
Demnach eine gute sache es eher strikt zu halten aber man sollte trotzdem die möglichkeit haben eine moderne app auch portable zu machen (ohne der developer zu sein).

Es gibt sicher eine lösung bloß hat sie evtl noch niemand reverse engineered.
Sollte aber doch jemand mehr wissen klärt mich bitte aif ich wäre sehr dankbar darüber :)

Tante Google

Store Apps entkapseln

Beitrag von Tante Google » 06.02.2021, 16:16


Benutzeravatar
Purgatory
★ Team Blog ★
Beiträge: 623
Registriert: 27.09.2018, 18:52
Hat sich bedankt: 9 Mal
Danke erhalten: 73 Mal
Gender:

Re: Store Apps entkapseln

Beitrag von Purgatory » 06.02.2021, 17:21

Ich verstehe den Sinn hinter der ganzen Aktion nicht ganz.
Du möchtest also Deine, angenommen, personalisierte Wetterapp "portable" machen um sie, ohne jegliche Änderungen machen zu müssen, auf anderen Systemen nutzen zu können, richtig? Das wird durch reines kopieren der *.dll's so nicht funktionieren. Zum anderen sind die reinen Apps, also nicht die installierten Programme, UWP Apps, die zwar eine *.exe haben, diese aber nicht dazu zuständig ist das Programm zu starten. UWP Apps funktionieren anders. Das Geheimnis dahinter ist der "Runtime Broker". Versuche es mal selbst, starte ein App, mach den Taskmanager (Reiter Prozesse) auf, und an der App stehen zwei Prozesse. Die App selbst und eben der "Runtime Broker". Eine *.exe wirst Du nicht finden, auch im Reiter "Details" nicht, außer dem "Runtime Broker" selbst. Dieser ist vor allem da um die Apps zu validieren, sprich er schaut ob die Sicherheit gewährleistet ist. Das macht er über "Hashes". Und jeder "Hash" einer App wird per Zufall generiert. Dann kommen noch die Manifeste dazu, also die "Manifest.xml", die gesamten dazugehörigen *.dll's, etc.... Passt einer dieser "Hashes" nicht zu einem definierten Profil, welches, wie gesagt, per Zufall generiert wird, wird die App nicht gestartet.

Es bleibt Dir also nichts anderes nichts übrig als die Apps via "start shell:..." zu starten, die *.exe interessieren da nicht, egal wo sie abgelegt sind. Die Apps werden stur nur da gestartet wo sie installiert wurden, aufgrund der "Hash-Werte". Was Dir also evtl. noch bleiben würde wäre die Registry Keys für die jeweilige App zu exportieren, und sie auf System XY zu importieren. Ob das klappt wage ich zu bezweifeln. Vor allem ist dann der Sinn von "Portable" auch mal amtlich gesprengt.

Und nebenbei, die Ordner "Appdata" etc. gab es schon vor Windows 10 oder Windows 8. Sie haben nichts damit zu tun, dass sich da nur reine UWP Apps reinschreiben sollen.
Wenn ich 64 Bit intus habe, kann ich auch alles :anstossen:

Hardware:
CPU: Ryzen 9 5900x MB: GA-X570 Aorus Master RAM: GSkill Trident Z Neo 2x16GB @3800 CL14 GPU: Asus TUF Gaming 6800 OC/UV SSD/HDD: Samsung 980 Pro 1TB, Kingston KC3000 2TB, WD Black SN850X 4TB, Samsung 870 Evo 4TB, Seagate ST4000DX001 PSU: BeQuiet! Straight Power Platinum 1000W Sound: Soundblaster Z Kühlung: Corsair iCUE H150i RGB PRO XT Case: Lian-Li O11 Dynamic

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 9121
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 149 Mal
Danke erhalten: 463 Mal
Gender:

Re: Store Apps entkapseln

Beitrag von DK2000 » 06.02.2021, 19:02

Natürlich wird die *.exe der Apps gestartet. Man findet diese auch im Task-Manager. Nur da es WinRT Apps sind, können diese nicht über den Explorer gestartet werden, so wie die Win32-Exe, sondern werden über den "Runtime Broker" gestartet, welcher eigentlich nur der Launcher für WinRT Apps ist.

Wenn Du z.B. die App "Alarm & Uhr" startest, dann wirst Du auch die Time.exe im Task-Manager finden (unter Details). Das ist letztendlich die App, welche ausgeführt wird. Diese Time.exe wurde aber nicht direkt gestartet, sondern indirekt über die RuntimeBroker.exe, da diese nun einmal in der WinRT Ecke laufen muss.

Daher auch das komplizierte Starten über "Shell:AppsFolder". Mit "AppsFolder" ist der Ordner "Applications", den man so nicht sieht, auf {4234d49b-0245-4df3-b780-3893943456e1} hört und vom "App Resolver" verwaltet wird (WinRT und Win32):

shell:AppsFolder ist shell:::{4234d49b-0245-4df3-B780-3893943456e1} aber nicht direkt "C:\Program Files\WindowsApps".

Daher kann man AppsFolder auch nicht durch einen beliebigen Pfad ersetzen, da dieser zwangsläufig diesen speziellen Ordern "Applications" öffnen muss. Nur in diesem Ordner kann man WinRT Apps direkt aus den Explorer starten bzw. Verknüpfungen auf dem Desktop anlegen lassen.

Wüsste jetzt nicht, wie man eine UWP-App (WinRT) portabel machen könnte. Die Ganze WinRT Plattform ist da größtenteils statisch, was Ordner angeht. Die kann man nicht so einfach mal ändern.

Sekkei
Neuling
Neuling
Beiträge: 6
Registriert: 25.04.2019, 13:10

Re: Store Apps entkapseln

Beitrag von Sekkei » 06.02.2021, 20:30

Ich dachte mir schon das evtl der shell ordner zum starten hardcoded ist, aber stimmt ja der runtimebroker startet wohl die app, also bekommt er args und es müsste möglich sein herauszufinden wie man sie evtl direkt darüber ansprechen kann.

btw nur weil es eine moderne app ist heißt es nicht das es nicht Auch oder Nur eine win32 app sein kann, der einstiegs punkt zum starten der exe hat sich geändert und ist nicht dokumentiert oder nicht leicht zugänglich.
Und nebenbei, die Ordner "Appdata" etc. gab es schon vor Windows 10 oder Windows 8.
Natürlich gibt es den ordner schon länger ? Allerdings gehören dort keine programme oder apps rein. Apps sowieso nicht da microsoft den ordner festlegt, alle legacy programme installieren sich dorthin wo sie es für richtig halten > deswegen selber portable machen. Ich habe nun mein eigenes system wo und wie ich programme speichere, und muss wohl jetzt mit einen zweiten hardcoded ordner von windows leben
Ich verstehe den Sinn hinter der ganzen Aktion nicht ganz
Das macht nichts :)

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 9121
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 149 Mal
Danke erhalten: 463 Mal
Gender:

Re: Store Apps entkapseln

Beitrag von DK2000 » 06.02.2021, 20:48

btw nur weil es eine moderne app ist heißt es nicht das es nicht Auch oder Nur eine win32 app sein kann,
Wie soll das gehen. WinRT und Win32 sind zwei unterschiedliche Laufzeitumgebungen. WinRT war für Smartphone gedacht und nur weil Microsoft die Idee toll fand, dass Apps sowohl auf dem Smartphone als auch auf dem PC laufen sollen, hat man die WinRT Umgebung parallel zur Win32 Umgebung hinzugefügt (mit eigener Auslagerungsdatei). Die Kommunikation zwischen WinRT und Win32 erfolgt dann über weitere Schnittstellen. So eine Modern App kann daher nie auf diese Art eine reine Win32 App werden, da das einfach die falsche Umgebung für die App ist.

Und das keine Programme nach AppData gehören, musst Du Microsoft das sagen. AppData ist seit einiger Zeit der Ordner, wo die Programme installiert werden, welche nur für den einen Benutzer installiert werden.

Sekkei
Neuling
Neuling
Beiträge: 6
Registriert: 25.04.2019, 13:10

Re: Store Apps entkapseln

Beitrag von Sekkei » 07.02.2021, 00:57

Das beste beispiel was mir spontan einfällt ist das nvidia control center. Eine reine win32 app , direkt vom store nach windowsApps. (Bemerke es gibt auch buisness Stores) Oder natürlich jedes großes Spiel wie zb forza.
WinRT ist auch nur eine library also kann man sie benutzen oder auch nicht , microsoft macht außnahmen bei manchen apps obwohl sie nicht RT sind, aber generel ist niemand verpflichtet eine reine RT app zumachen. Abgesehen natürlich davon das man Jede app als appx oder msix erstellen kann und somit eine store app erhält die aber Nicht den selben restriktionen unterliegt wie RT apps was bsw das starten angeht da sie die normale win32 api zum starten Und interaktion mit den OS benutzen. Wobei man hier frei mixen darf mit der winRT lib. Solche apps sind aber Windows X imkompatible, und werden nicht gelistet.
Und das keine Programme nach AppData gehören, musst Du Microsoft das sagen. AppData ist seit einiger Zeit der Ordner, wo die Programme installiert werden, welche nur für den einen Benutzer installiert werden.
Wirklich ? Außer Visual Code kenne ich kein MS produkt das sich dort installieren möchte. Gut es mag mir nicht gefallen aber wen MS es für richtig hält.. Ich finde der name impliziert nur sehr gut wofür der ordner eigentlich da war

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 9121
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 149 Mal
Danke erhalten: 463 Mal
Gender:

Re: Store Apps entkapseln

Beitrag von DK2000 » 07.02.2021, 14:10

Das sich das "NVIDIA Control Panel" aus dem Store nach ~\WindowsApps installiert, liegt aber an NVIDIA selber. Wenn diese Win32 Anwendung richtig verpackt werden würde, kann sie auch aus dem Store direkt unter %ProgramFiles% installiert werden oder bei Bedarf auch an jedem anderen beliebigen Ort. Ist halt eine Win32 Anwendung. Die ist nicht an ~\WindowsApps gebunden.

Und Ausnahmen sind das auch keine. Das wurde von Microsoft so offiziell eingeführt.

Und WinRT (Windows Runtime) ist kein Library, sondern eine Laufzeitumgebung. Sobald die App startet, läuft die nicht unter Windows 10, sondern in der WinRT Umgebung. Die Unterscheidet sich von der Win32 Umgebung. Daher erscheinen ja auch so viele vermeintlich fehlende *.dlls, wenn man so eine App einfach so anklickt. Die Pfade zu dem *.dlls werden erst in der WinRT Umgebung bereitgestellt und existieren dann auch nur hier, so wie der Rest der benötigten Pfade. Das ist etwas komplizierter das Ganze, da WinRT ein in sich abgeschlossenes System ist bzw. war. Mittlerweile verschmelzen WinRT und Win32 immer weiter und mit WinUI 3/Reunion gibt es dann eigentlich keine Grenzen mehr. Die WinRT App kann dann Win32 Features verwenden und umgekehrt. Bedeute dann aber immer noch nicht, dass eine WinRT App außerhalb der WinRT Umgebung laufen kann.
Außer Visual Code kenne ich kein MS produkt das sich dort installieren möchte.
Das liegt dann daran, dass Du den PerUser-Installer genommen hat. Der System-Installer installiert Visual Code für alle Benutzer unter %ProgramFiles%.

Das Selbe gilt auch für den neuen Edge oder OneDrive. Beide lassen sich im manuellen Installations-Modus entweder als PerUser installieren oder Systemweit für alle Benutzer. Wobei OneDrive auch von alleine wechselt, abhängig ob man Bitlocker verwendet oder nicht.

Die Insider Versionen vom Edge installieren teilweise als PerUser nach %LocalAppData% oder auch nach %ProgramFiles(x86)%.

In wie weit andere nicht-Microsoft Anwendungen das so halten, müsste ich testen. Fällt mir jetzt so spontan nur balenaEtcher ein. Das Installiert sich PerUser. Das soll halt dazu dienen, dass sich Benutzer Anwendungen "Privat" installieren können, so dass die andere Benutzer diese Anwendung gar nicht erst sehen können. Ob das Sinn macht oder ob der gewählte Ort dafür sinnvoll ist, das muss man Microsoft fragen.

Gerade gesehen: Die Browser Vivaldi und Opera installieren sich auch nach %LocalAppData%, wenn man einfach nur das Setup anklickt.

Antworten