2017-05-09 58 views
0

我已經使用MakeAppX將Win32應用程序轉換爲UWP,它似乎不運行。當我點擊開始菜單中的圖標時,除了一個繁忙的圖標短暫出現在光標上外,沒有任何反應。轉換後的UWP ...什麼都沒有發生

我完成了記事本+ +相同的過程和它的所有DLL和運行良好(使用完全相同的清單文件,只是改變了EXE)

我的問題是:

  1. 哪裏的UWP保存它創建的文件/臨時文件等?如果我運行一個可執行文件並在它旁邊生成文件,那麼當您運行UWP時會在哪裏?
  2. 我可以在AppxManifest中設置該位置嗎?
  3. 有無論如何看它是否正確運行?

編輯:

難道這是一個文件的權限問題?我的應用程序需要寫入'C:\ MyFolder'&在啓動時創建一個文件夾,其中包含可執行文件的一部分,並且不會發生。

因此,仔細觀察這一點,我遇到了this blog,它討論了爲轉換做準備。我認爲上述文件訪問可能違反以下內容:

  • 您的應用程序寫入您的應用程序的安裝目錄。例如,您的應用程序寫入一個日誌文件,該文件放在與您的exe相同的目錄中。這不受支持,因此您需要找到其他位置,例如本地應用數據存儲區。

這看起來像一個相當停滯的問題,我是否正確的假設?

回答

0

我會保留這個簡短的內容,我會盡量保持直截了當,所以首先要做的第一件事。

當我正在將win32應用程序移植到UWP時,我發現的主要問題是權限,因爲該應用程序無法運行。現在爲什麼會發生?我們將在一分鐘內進入。

什麼是UWP應用程序? 因此,如果所有人都必須是黑色和白色,並從他們身上刪除所有花哨的東西,他們都是exe's。它的體系結構,設計,安裝,體現如此,以便他們運行在應用程序​​。 在Windows 10機器上試試看:,轉到「C:/ program files並保持」顯示隱藏文件夾「啓用,你會看到一個名爲」Windows Apps「的文件夾,並且你沒有權限您可以快速Google搜索如何讓自己成爲該文件夾的管理員或添加自己作爲訪問文件夾的權限。您將看到什麼?您將看到所有預先安裝的Windows應用程序及其資產和一些exe文件庫,嘗試並運行它,它會給你一個錯誤,說明:「你只能在應用程序環境中運行程序。」請注意,這可能不是理解這種方法的理想方式,但是用黑色和白色這是我在面對問題時解釋我的。

現在,我們有它想通了黑色和白色版本,讓我們來看看這些問題:

  • 在UWP應用,有存儲器(市話,漫遊),漫遊的概念是那些它們與計算機中的Microsoft帳戶關聯,以便在其他Windows設備上提供存儲的數據,例如:移動邊緣瀏覽器和PC邊緣瀏覽器上的搜索歷史記錄將被同步。對於密碼,我們有一個密碼保險箱。這保留了所有基於身份驗證的數據,因此用戶無需每次都在每臺設備上登錄。現在是本地存儲,這是一個基於容器的序列化存儲系統,可以讓你爲你的應用存儲小數據。例如:應用程序第一次發佈布爾,音樂音量喜好或類似的東西。

  • 然後我們有anotger方式,即寫入數據到文件。這個問題呢?與傳統的wpf應用程序不同,文本文件駐留在軟件包中,因此在應用程序關閉時無法使用文件操作來獲取文件。如果您分享數據,您只能通過電子郵件發送或將其上傳到onedrive。

  • 存儲的另一個實現名爲Temp(僅在模板10框架中),它可以幫助您僅在應用程序運行時保留/存儲一些數據。在第1頁需要一些數據而第7頁需要一些數據的情況下使用它,您不需要將數據傳遞到每個頁面。非常方便。

  • 你也有數據庫,SQLite在處理大量數據方面做得非常出色。

這是相當多的存儲選項,在我多年的經驗,這一切已足以涵蓋所有情況。查看GitHub上Template 10開源的存儲服務,這是一項非常棒的工作。

現在談論清單,應用程序清單是必需的文件,任何缺少的文件現在都會讓您的應用程序發佈或在某些情況下限制功能,例如:您尚未宣佈需要使用設備的麥克風,現在當你嘗試啓動語音識別時,它會給你一個拒絕訪問的錯誤,這會讓你陷入一個問題,即用戶拒絕訪問,但實際上由於OS拒絕訪問而從未生成權限請求提示到麥克風,因爲您的應用程序沒有聲明需要使用麥克風。這只是一個例子。缺少可視資源不會讓您的應用獲得認證。

知道你的應用程序是否完美運行的唯一方法就是任務管理器,因爲你可以對你的exe進行正確的診斷,你就會知道你的應用程序將使用哪種處理和資源。這就是我檢查的方式。現在我還沒有找到更好的方法。但這對我很有用。

最後關於您的編輯請注意 Windows應用程序無法訪問文件系統。因此,您無法訪問C:/ SomeFolder或任何位於應用程序沙箱外部的文件。你可以訪問的唯一東西就是你的軟件包和它裏面的東西。您可以通過使用Uri路徑作爲ms:appx-//路徑(如「Assets/fonts/myFont.TTF」)來訪問應用程序上下文中程序包或應用程序沙箱中的文件。 您可以訪問文件系統的唯一方法是使用打開快速窗口對話框的FilePicker,並允許您附加文件。它返回一個StorageFile類對象,通過它你可以轉換和讀取,如果你想。但是,如果沒有FilePixker,那麼您的應用程序無法訪問文件系統,也無法使用位於主機系統上的任何文件。

雖然我們在這,不用說,你的應用程序無法訪問其他應用存儲的數據。存儲的數據專門用於存儲它的應用程序。但是您可以使用Uri與其他應用程序進行通信,以將其稱爲內部應用程序通信或快速Google搜索如何在兩個應用程序之間傳輸數據的應用程序將爲您提供良好開端。此外,在Windows 10週年更新AppServices已被允許允許我們從另一個應用程序通過暴露幾個庫和入口和出口點訪問數據。我已經衝過這個部分,因爲它不是你問題的範圍,但如果你需要或在評論中提問,請在線閱讀。

Nai我會推薦什麼,既然你有啓動時間文件拉動和資源收集,我會說WPF是一個更合適的解決方案,因爲你將有更多的訪問文件系統,並且有很多你可以使用wpf做你可能想對你的應用程序做的事情(即使是可用的城域用戶界面塊),但它會讓你保持較低的基本技術,但如果訪問和與文件系統交互是必要的,那麼我建議你堅持wpf。

但是,您可能會每次在應用程序啓動時手動添加文件(聽起來很傷心),或者您可以將這些文件放到網上,然後抓取它們,然後上傳在線更新(聲音比文件更好選擇應用程序啓動),然後UWP是要走的路。

對於UWP平臺跳躍開始考慮使用模板10,因爲它有一個相當複雜的設置服務,文件服務,以隨時爲你準備了大量的樣板代碼了,如果箱子沿密碼保險箱。

我希望我已經能夠回答你的問題,如果有什麼事情隨時使用下面的評論部分。

我很抱歉的格式,我使用的是移動設備來回答。當我在辦公室

1

如果您的應用程序被寫入安裝目錄中,您將需要更改代碼寫入到本地應用程序數據文件夾,而不是作爲預備指南召喚出我將在後面進行編輯。

寫操作到安裝目錄,以確保應用程序的部署堆棧進行無縫,差分更新,應用程式的乾淨卸載能力都是不允許的。

順便說一下,要通過您的應用程序啓動失敗進行調試,您可以在Visual Studio中執行以下操作:調試 - >其他調試目標 - >調試安裝的應用程序包 - >從已安裝的應用程序列表中選擇您的應用程序。

+0

謝謝,我想我需要調試啓動過程,看看它停在哪裏 – GPPK