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

时间:2014-09-22 04:04:30

标签: windows-runtime windows-store-apps

我正在开发一个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>

2 个答案:

答案 0 :(得分:1)

尝试这个,如果它有效......为我工作

enter image description here

  1. 运行基准应用程序

  2. 创建一个新的工作文件夹(如果您使用像TFS这样的代码存储库,则创建分支)

  3. 例如: VS 2013 - &gt;项目 - &gt;应用1 然后创建 VS 2013 - &gt;项目 - &gt; App 1-Copy

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

      并运行新的应用程序

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

      希望这有帮助

答案 1 :(得分:1)

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

正如您所知,Visual Studio将卸载它为您暂存的旧版本,但您可以创建一个部署包并自行重新安装。

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

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

构建它将安装新版本并删除暂存版本。

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

最终将使用旧版本的正常部署(在Program Files \ WindowsApps中)开发人员包和新版本的暂存(在VS项目目录中)。

(或者,您可以随机播放版本以重命名旧版本以表明它已旧,为重命名的版本创建应用程序包,将Identity重新重命名为原始版本,然后为旧版本安装dev-package重命名版本。)