Windows runtime 本地部署Windows应用商店应用程序的并行版本

Windows runtime 本地部署Windows应用商店应用程序的并行版本,windows-runtime,windows-store-apps,Windows Runtime,Windows Store Apps,我正在开发一个Windows应用商店应用程序,我喜欢在开发下一个应用程序时保留最新安装的基线 问题在于,每当我在Visual Studio 2013中运行当前的开发版本(使用F5)时,它都会卸载最新的基线 我通过手动编辑包.appxmanifest创建并安装基线,如下所示: 编辑标识名 将.R附加到应用程序名称的每个实例(例如MyApp附加到MyApp.R) (下面是完整的文件列表) 我认为这应该足够了,但我徒劳地试图让它工作,我还在项目属性中,将.R附加到程序集名称,例如MyApp.R,并

我正在开发一个Windows应用商店应用程序,我喜欢在开发下一个应用程序时保留最新安装的基线

问题在于,每当我在Visual Studio 2013中运行当前的开发版本(使用F5)时,它都会卸载最新的基线

我通过手动编辑
包.appxmanifest
创建并安装基线,如下所示:

  • 编辑标识名
  • .R
    附加到应用程序名称的每个实例(例如
    MyApp
    附加到
    MyApp.R
(下面是完整的文件列表)

我认为这应该足够了,但我徒劳地试图让它工作,我还在项目属性中,将
.R
附加到程序集名称,例如
MyApp.R
,并更改了
MyApp\u 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>

MyApp.R
joedev_000
资产\StoreLogo.50x50.png
6.3.0
6.3.0

如果有效,试试这个。。。为我工作

  • 运行基线应用程序

  • 创建一个新的工作文件夹(如果您使用的是类似TFS的代码存储库,则创建一个分支)

  • 例如:VS 2013->Projects->App 1然后创建VS 2013->Projects->App 1-Copy

  • 更改新工作副本中打包选项卡下Package.appxmanifest中的打包名称
  • 一些独特的功能,如更改最后两位数字(要区分两个应用程序,您可以更改“应用程序”选项卡下的显示名称和“打包”选项卡下的“打包显示名称”)

    然后运行新的应用程序

    这将列出您的基线和开发版本


    希望这有助于

    清单中的标识是重要的部分(在可视化清单编辑器中,这是“包名”)。更改标识足以安装两个版本。您还可以将标识更改为有意义的内容,而不是GUID

    正如您所注意到的,VisualStudio将卸载它为您准备的旧版本,但您可以创建一个部署包,然后自己重新安装

    当您准备切换到新基线时,请使用Project.Store.Create应用程序包。。。创建开发测试包的菜单(即不上传到商店)

    更新您的清单以使用新标识。更改显示名称在技术上是不必要的,但会减少混乱

    生成此文件将安装新版本并删除暂存版本

    现在安装您创建的开发包:转到AppPackages文件夹,并为要重新安装的旧版本运行Add-AppDevPackage.ps1

    您将得到一个正常部署(在Program Files\WindowsApps中)的旧版本开发包和一个暂存(在您的VS project目录中)的新版本开发包


    (或者,您可以对版本进行洗牌以重命名旧版本以指示其为旧版本,为重命名的版本创建应用程序包,将标识重新重命名为原始版本,然后为旧重命名的版本安装开发包)。

    Ah。。这是我第一次这么做时遗漏的一步——复制整个解决方案以创建基线!这确实有效。不过,Rob Caplan的回答将允许我在不复制解决方案的情况下执行此操作,因此我将使用它。谢谢这种方法会破坏推送通知。是否存在允许推送通知工作的变通方法?推送通知与应用程序ID绑定,因此,如果您为开发中的应用程序使用单独的ID,那么您将需要为开发版本使用单独的推送通道。