hack のためのネタ帳, etc,,,

まとめ

AUMID 使えばコマンドラインから起動はできたが、Open with Code みたいな感じで、最初からフォルダやファイル開かせる方法は見つけられなかった。

状況

ちょっと前に なんて話があったんだけど、そう言えば、先日 みたいなことを調べてて、最終的に にたどり着いたので、これ使えば PWA アプリをコマンドラインから叩けるんじゃね?
と思い試してみた。

Microsoft Edge の場合

まず、Chromium 版の Microsoft Edge で を開き、Microsoft Edge 右上の「…」→「アプリ」→「Visual Studio Code のインストール」から PWA としてインストールする。

次に PowerShell から AppxPackage と AppxPackageManifest を確認
PS C:\Users\kou> Get-AppxPackage |? Name -match Code


Name              : vscode.dev-AC33FD98
Publisher         : CN=vscode.dev, OID.2.25.311729368913984317654407730594956997722=1
Architecture      : Neutral
ResourceId        :
Version           : 1.0.0.0
PackageFullName   : vscode.dev-AC33FD98_1.0.0.0_neutral__whmmdym2whtw2
InstallLocation   : C:\Program Files\WindowsApps\vscode.dev-AC33FD98_1.0.0.0_neutral__whmmdym2whtw2
IsFramework       : False
PackageFamilyName : vscode.dev-AC33FD98_whmmdym2whtw2
PublisherId       : whmmdym2whtw2
IsResourcePackage : False
IsBundle          : False
IsDevelopmentMode : False
NonRemovable      : False
Dependencies      : {Microsoft.MicrosoftEdge.Stable_98.0.1108.43_neutral__8wekyb3d8bbwe}
IsPartiallyStaged : False
SignatureKind     : None
Status            : Ok



PS C:\Users\kou> Get-AppxPackage |? Name -match Code | Get-AppxPackageManifest

xml           Package
---           -------
version="1.0" Package


PS C:\Users\kou> Get-AppxPackage |? Name -match Code | Get-AppxPackageManifest |% {$_.Package}


xmlns               : http://schemas.microsoft.com/appx/manifest/foundation/windows10
mp                  : http://schemas.microsoft.com/appx/2014/phone/manifest
uap                 : http://schemas.microsoft.com/appx/manifest/uap/windows10
uap3                : http://schemas.microsoft.com/appx/manifest/uap/windows10/3
uap10               : http://schemas.microsoft.com/appx/manifest/uap/windows10/10
rescap              : http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities
rescap3             : http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities/3
desktop2            : http://schemas.microsoft.com/appx/manifest/desktop/windows10/2
IgnorableNamespaces : uap uap3 rescap desktop2
Identity            : Identity
Properties          : Properties
Dependencies        : Dependencies
Resources           : Resources
Applications        : Applications
Capabilities        : Capabilities



見てのように、UWP とは異なり、Package.Applications 及びその下にぶら下がってる Package.Applications.Application が見当たらないため、AUMID (PackageFamilyName + "!" + Application.Id) の構成要素である Application.ID が分からない。

UWP だと App を標準的に使ってるので、同じじゃね? と思い、試しに、
Start-Process shell:appsFolder\vscode.dev-AC33FD98_whmmdym2whtw2!App
としてみたところ、ビンゴ! PWA としてインストールした Visual Studio Code が起動した。

と、ここまでは上手く行ったのだが、
ついでに OpenFolder まで出来んものか? と思い、
Start-Process shell:appsFolder\vscode.dev-AC33FD98_whmmdym2whtw2!App -ArgumentList .
Start-Process shell:appsFolder\vscode.dev-AC33FD98_whmmdym2whtw2!App -ArgumentList C:\Users\kou
Start-Process shell:appsFolder\vscode.dev-AC33FD98_whmmdym2whtw2!App -ArgumentList file://C:/Users/kou
等をためしてみたが、此方は上手く行かない。
ヘルプとか出ないかなと思い、/? とか /h, /help, -?, -h, --help 等も試してみたがスイッチ類を与えると、そもそも PWA が起動しない。
なんなら PowreShell だと -? で Start-Process のヘルプが出る始末。

web app なのでひょっとしてと思い
Start-Process shell:appsFolder\vscode.dev-AC33FD98_whmmdym2whtw2!App?folder=openfile://C:/Users/kou
みたいなのも試してみたが、こちらは、AUMID として認識されなくなりエラーになる。

通常版のコマンドオプションが参考にならんものかと 辺りも眺めて見たが、そもそも - や / で始まるパラメータ渡すと PWA が起動しないので、どうしようもなさそう。

流石に PWA にそこまで求めるのは酷と言うものかもしれないが、やはり「Open Folder」ボタンからファイルダイアログ経由でフォルダ選ぶのはちょっとだる過ぎる。

Google Chrome の場合

Google Chrome から PWA をインストールした場合、shell:appsFolder には出て来るんだけど、Get-AppxPackage には出て来ない。
shell:appsFolder から適当なフォルダーにショートカットファイルを作って、内容を確認してみたところ、
  • Chrome._crx_jhdpafkbedecbbppbpboebapeb
となっていたので、
Start-Process shell:appsFolder\Chrome._crx_jhdpafkbedecbbppbpboebapeb
としてみたら起動は出来た。

更に、「PWA start command-line chrome」でググると
chrome --profile-directory=Default --app-id=$appid
で動くみたいな話を見つけたんだが、此方はなぜか
Start-Process "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -ArgumentList --profile-directory=Default,--app-id=jhdpafkbedecbbppbpboebapeb
では起動してくれなかった。
prefix の _crc_ が不要なのでは?と思い
Start-Process "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -ArgumentList --profile-directory=Default,--app-id=_crx_jhdpafkbedecbbppbpboebapeb
も試してみたが駄目。

%LOCALALLDATA% 以下を確認してみると
  • %LOCALAPPDATA%\Google\Chrome\User Data\Default\Web Applications\_crx_jhdpafkbedbgckdnecbbppbpboebapeb
にインストールされているのを確認したのだが、これ ID 同じだよね?

ProcessExplorer でコマンドラインパラメータ確認してみると
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory=Default --app-id=jhdpafkbedbgckdnecbbppbpboebapeb
ってなってたんだが、 prefix の _crx_ が不要ってこと?
でもそれはさっき試して駄目だったのだが、と思い、これをコピペしてみると
Start-Process "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -ArgumentList --profile-directory=Default,--app-id=jhdpafkbedbgckdnecbbppbpboebapeb
で起動する。

狐につままれた気持ちになりながら、app-id 比較してみると
shell:appsFolder\Chrome._crx_jhdpafkbedecbbppbpboebapeb       # 有効な shell schema の app id
                    --app-id=jhdpafkbedecbbppbpboebapeb       # 起動しなかった方
                    --app-id=jhdpafkbedbgckdnecbbppbpboebapeb # 起動した方
とかなってて、 shell schema からコピペしたのが駄目だったらしい。

なんか、shell schema の方は id が真ん中省略してあって頭とお尻確認すると一見同じに見えるんだけど、実は真ん中が省略してあって、長さが違うみたいな罠だった。
jhdpafkbede        cbbppbpboebapeb # 起動しなかった方
jhdpafkbedb gckdne cbbppbpboebapeb # 起動した方

酷い。

あと、--profile-directory=Default はなくても起動する。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます