該C:\Program Files\WindowsApplications
資料夾內有我電腦上的 Modern Apps 的 .exe 檔案。當我雙擊其中一個時,會彈出一個視窗告訴我:
This application can run only in the context of an app container
有沒有辦法直接從其 .exe 檔案運行現代應用程序,而不僅僅是透過其磁貼?
先感謝您!
PS:我正在使用 Windows 10 技術預覽版。
答案1
在 Windows 8 之前,您可能擁有「獨立」.exe 應用程式。安裝主要是建立連結和引用,以便應用程式輕鬆找到所需內容並運行。如果應用程式所需的一切都由應用程式本身提供,則無需安裝即可運行。應用程式容器是 Win 8 中引入的安全概念。應用程式必須設計為與應用程式容器一起使用才能安裝。這關聯對這個概念及其工作原理有一個很好的描述。
編輯:對於已安裝的應用程序,似乎所有關聯和權限都附加到磁貼,因此 .exe 無法直接運行。
答案2
您可以使用 explorer.exe shell 命令從命令列執行 Windows 現代應用程序,如下所示:
explorer.exe shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>
或者,透過 start,如果您需要傳遞參數,建議您這樣做:
start shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID> arg1 arg2
訣竅是發現套件名稱、發布者 ID 和應用程式 ID。如果所有這些資訊都可以在應用程式的 Microsoft Store 清單、任務管理器或「設定」->「應用程式和功能」中的應用程式清單中找到,那就太好了。到目前為止,我還沒有找到收集這三項資訊的簡單方法。以下是使用工作管理員和檔案總管執行此操作的步驟,複製自我的博文。
- 像平常一樣從「開始」功能表、工作列等開啟現代應用程式。
- 啟動工作管理員(我右鍵單擊 Windows 工作列並選擇“任務管理器”)
- 展開您感興趣的應用程式的列表,右鍵單擊子項目,然後選擇“轉到詳細資訊”
- 右鍵單擊突出顯示的可執行檔並選擇“開啟檔案位置”
- 如果您知道如何解析它們,則剛剛開啟的目錄的名稱將為您提供套件名稱和發布者 ID。以日曆應用程式為例,目錄名稱「microsoft.windowscommunicationsapps_16005.12827.20560.0_x64__8wekyb3d8bbwe」以套件名稱(「microsoft.windowscommunicationsapps」)開頭,後面是您不需要的版本和平台資訊(1606.12020.202.是發布者ID(“8wekyb3d8bbwe”)。記下套件名稱和發布者 ID 以供以後使用。
- 開啟該目錄中的 AppxManifest.xml 文件
- 在 AppxManifest.xml 檔案頂部附近,您將找到一個 Identity 元素,其中包含一個 Name 屬性 - 確認該值與我們已從目錄名稱中取得的套件名稱匹配
- 在 AppxManifest.xml 檔案中搜尋可執行檔名稱,例如 HxCalenderAppImm.exe,您將找到如下所示的 XML 元素:
現在您已經收集了我們需要的三個信息,您可以建立命令以從命令列打開應用程式。
您的命令將如下所示,將這些部分替換為上面收集的三個資訊:
explorer.exe shell:AppsFolder\<Package Name>_<Publisher ID>!<App ID>
繼續使用郵件和日曆包中的日曆應用程式範例,您將輸入如下內容:
explorer.exe shell:AppsFolder\microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.calendar
親愛的微軟:請讓這一切變得更簡單!
答案3
我相信現在這是可能的,至少在某種程度上是可能的。例如,可以使用「Microsoft.WindowsScan_8wekyb3d8bbwe!App」作為目標將「Windows Scan」應用程式轉換為捷徑。