2

我目前正在開發一個Windows應用商店應用,最終將在ARM設備可用時針對它們。現在,我一直在我的臺式電腦上開發和測試Visual Studio,並且一切正常。但是,當我嘗試創建應用程序包並將其傳遞給公司內部的其他人員進行測試時,應用程序將無法正常運行。Windows 8 Metro應用端負載部署

該解決方案包括兩個項目。第一個是設置爲構建dll文件的C++項目。這樣做的目的是揭示似乎無法訪問C#項目的Direct2D和DirectWrite庫。第二個項目是C#項目,它引用了這個dll的繪圖功能,幷包含一個XAML界面和大部分的程序邏輯。所有這些都可以在我的開發機器上從Visual Studio中完美工作(也可以在安裝包時使用)。

當我發送給公司內的其他人的包文件,安裝似乎通過PowerShell腳本安裝做工精細。該圖塊顯示在開始屏幕上,程序將啓動幾秒鐘。出現C#和XAML接口,但應用程序的DirectX部分不可見,整個應用程序在幾秒鐘內關閉。這使我相信在安裝時,dll可能不會正確安裝或引用。我已經檢查了包文件,並且在構建過程完成後,dll文件將包含在包中。

我已經打包了幾個不同的測試程序(MSDN示例),它們都安裝在它們的機器上,但是我們得到了相同的結果,它們不會運行(再次,構建它們時,所有示例在我的開發機器上運行良好) 。唯一正常工作的測試項目是一個簡單的C#項目,完全不使用DirectX。我嘗試過的任何DirectX示例都失敗了(包括根本不使用C#的本機C++示例)。

要清楚,我用建築工藝要在項目 - >銷售 - >創建應用程序的軟件包,並選擇無選項上傳到Windows應用商店。

有沒有人有什麼想法可能會出現錯誤的構建或安裝過程?

在此先感謝您的幫助!

+0

只是一個問題,但是:你可以在Visual Studio的測試機器上啓動項目嗎?如在 - 你可以運行該應用程序而不必將其作爲單獨的包部署? –

+0

是的,他們已有Visual Studio的任何機器都可以在Visual Studio中啓動項目。此外,一旦他們從Visual Studio中啓動,Powershell部署方法就可以正常工作。似乎在Visual Studio中啓動了一些東西,這使得所有的工作都可以正常工作。但是,對於我需要將應用程序傳遞給所有人的情況,這不是一個可行的選項。 – mcwadar

回答

2

它是否與Metro Sideloader一起使用?我不知道,如果它只是增加了一個UI到PowerShell腳本,但它適合我的球隊和我用於測試...

祝你好運!

+0

我只是試着按照你的建議嘗試了Metro Sideloader,它似乎不起作用。我下載了exe文件,以管理員身份運行並按照頁面上的說明操作。一切似乎安裝正確,應用程序報告成功。但是,該應用程序從未出現在拼貼屏幕上,並且在「所有應用程序」部分中也未找到該應用程序。在這一點上,我想我會再等幾天,直到RT片出來,並試圖爲這些內部構建。無論如何,這正是我將要瞄準的目標。感謝您的建議。 – mcwadar

1

您是否正在將DirectX應用程序的調試版加載到未安裝Windows SDK的計算機上? Visual Studio的默認DirectX項目和MSDN上的示例在創建D3D設備時都請求D3D11_CREATE_DEVICE_DEBUG標誌。如果運行代碼的計算機上未安裝Windows SDK,則設備創建將失敗。

以下是幾個不同的選項,可以讓您自行解鎖。其中任何一個應該會給你想要的結果:

  • 創建發佈包並部署它而不是調試包。

  • 或 - 轉到DirectXBase.cpp,並從代碼中刪除D3D11_CREATE_DEVICE_DEBUG標誌。

  • 或者 - 在目標機器上安裝Visual Studio的遠程調試工具。這將安裝必要的SDK組件以允許創建D3D調試設備。關於這個選項的另一個很酷的事情是,一旦你設置好了,你就不需要手動創建包並且再次加載它們。只需告訴Visual Studio ARM計算機的名稱,然後按F5遠程部署即可。更多的信息在這裏:http://msdn.microsoft.com/en-us/library/vstudio/bt727f1t.aspx

0

你如何在你的項目中部署本機DLL?你在使用項目到項目的參考嗎?你可以驗證你的DLL是否在包應用程序目錄的根目錄下的最終包中結束?

我建議使用Sysinternals Procmon來觀察目標機器上的應用程序負載。如果崩潰或失敗,您可以查看日誌歷史記錄,瞭解它嘗試加載和失敗的DLL。通常這會顯示爲重複的一系列DLL加載探測器(它會嘗試從應用程序目錄加載dll,然後繼續嘗試其他許多路徑)。