2014-09-22 160 views
0

我正在開發Windows應用商店應用,並且我希望在開發下一個應用時保留最新的基準安裝。本地部署並行版本的Windows應用商店應用

問題是,無論何時我在Visual Studio 2013(使用F5)中運行當前的開發版本,它都會卸載最近的基線。

我創建並通過手動編輯Package.appxmanifest安裝如下基準:

  • 編輯標識名稱
  • 追加.R應用名稱的每個實例
(如 MyAppMyApp.R)。

(全文件清單如下)

我覺得應該夠了,但是我徒勞無功地嘗試使這個工作成功,我還在項目屬性中添加了.R到程序集名稱,例如。 MyApp.R,並在MyApp_TemporaryKey.pfx

改變一個數然後,當我運行應用程序(F5)它被安裝爲MyApp.R,並持續,並且可以Visual Studio中之外使用。

問題是,當我撤消這些更改以恢復開發並再次運行它作爲MyApp然後MyApp.R被卸載,我只剩下最新版本,即。 MyApp

我知道這是可以實現的,因爲我之前做過一次。我沒有準確地記錄那次我做了什麼,因爲它看起來不太難,但經過幾個小時的努力,我再也無法做到了。要麼我沒有正確地重現這些步驟,或者自從我上次做了Windows 8.1之後發生了一些變化。

爲什麼Windows認爲這兩個版本是相同的應用程序?還有沒有改變的另一個身份或關鍵?

Package.appxmanifest:

<?xml version="1.0" encoding="utf-8"?> 
<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest"> 
    <!--<Identity Name="8086b500-65af-4dd4-a67b-923c43472921" Publisher="CN=joedev_000" Version="1.0.0.0" />--> 
    <Identity Name="11111111-65af-4dd4-a67b-923c43472930" Publisher="CN=joedev_000" Version="1.0.0.0" /> 
    <Properties> 
    <DisplayName>MyApp.R</DisplayName> 
    <PublisherDisplayName>joedev_000</PublisherDisplayName> 
    <Logo>Assets\StoreLogo.50x50.png</Logo> 
    </Properties> 
    <Prerequisites> 
    <OSMinVersion>6.3.0</OSMinVersion> 
    <OSMaxVersionTested>6.3.0</OSMaxVersionTested> 
    </Prerequisites> 
    <Resources> 
    <Resource Language="x-generate" /> 
    </Resources> 
    <Applications> 
    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="MyApp.R.App"> 
     <m2:VisualElements DisplayName="MyApp.R" Square150x150Logo="Assets\SquareLogo.150x150.png" Square30x30Logo="SquareLogo.30x30.png" Description="MyApp.R" ForegroundText="light" BackgroundColor="#464646"> 
     <m2:DefaultTile Square70x70Logo="SquareLogo.70x70.png" Square310x310Logo="SquareLogo.310x310.png" Wide310x150Logo="WideLogo.310x150.png" ShortName="MyApp.R" DefaultSize="square150x150Logo"> 
      <m2:ShowNameOnTiles> 
      <m2:ShowOn Tile="square150x150Logo" /> 
      </m2:ShowNameOnTiles> 
     </m2:DefaultTile> 
     <m2:SplashScreen Image="Assets\SplashScreen.620x300.png" /> 
     </m2:VisualElements> 
    </Application> 
    </Applications> 
    <Capabilities> 
    <Capability Name="internetClient" /> 
    </Capabilities> 
</Package> 

回答

1

Manifest中的Identify是重要的部分(在視​​覺清單編輯器中,這是「包名稱」)。更改身份足以允許安裝兩個版本。您還可以將標識更改爲有意義的內容,而不是GUID。如您所見,Visual Studio將卸載它爲您演示的舊版本,但您可以創建一個部署包並自行重新安裝它。

當您準備切換到新基線時,使用Project.Store.Create App Packages ...菜單創建開發測試包(即不上傳到商店)。

更新您的清單使用新的標識。改變顯示名稱在技術上不是必要的,但會減少混淆。

構建這個將安裝新版本並刪除暫存版本。

現在安裝您創建的開發包:轉到AppPackages文件夾併爲要重新安裝的較舊版本運行Add-AppDevPackage.ps1。

您將最終得到一個正常部署的(在Program Files \ WindowsApps中)舊版本的開發包和新版本的一個stage(在VS項目目錄中)包。 (或者,您可以對版本進行洗牌以重命名舊版本以指示其舊版本,爲重命名的版本創建應用程序包,將該標識重新重命名爲原始版本,然後爲該版本安裝dev-package舊的更名版本)。

+0

此方法會中斷推送通知。有沒有解決方法可以使推送通知起作用? – 2014-12-09 13:49:16

+0

推送通知綁定到應用程序ID,因此如果您爲開發中應用程序使用單獨的ID,那麼您需要爲開發版本提供單獨的推送通道。 – 2014-12-09 19:54:54

+0

我想盡可能多,謝謝你的確認。 – 2014-12-10 09:55:49

1

試試這個,如果它工作......爲我工作

enter image description here

  1. 運行基本的應用程序

  2. 創建一個新的工作文件夾(或分支,如果您使用的代碼存儲ÿ像TFS)

例如:VS 2013 - >項目 - >應用1然後創建VS 2013 - >項目 - >應用1-複印

  • 更改包裝名稱包裝。下包裝標籤在新的工作副本
  • 一些東西,會像改變過去的數位獨特appxmanifest(爲了區別這兩個應用程序之間可以應用標籤,幷包下更改顯示名稱在包裝標籤顯示名稱)

    並運行新的應用程序

    這會列出你的基線和開發版本

    希望THI s幫助

    +0

    啊..這是我第一次錯過這一步 - 復​​制整個解決方案,使基線!這確實有效。然而Rob Caplan的答案會讓我在不復制解決方案的情況下做到這一點,所以我會以此來運行。謝謝! – 2014-09-25 03:00:30

    相關問題