---
title: Continuous Deployment of an XBAP application
description: Continuous Deployment of an XBAP application
image: http://support.inreleasesoftware.com/attachments/token/arv0904kxht7i1j/?name=1.png
---

# Continuous Deployment of an XBAP application

Posted by InRelease - February 05, 2013

- [**](https://www.facebook.com/sharer/sharer.php?u=https://blogs.incyclesoftware.com/2013/02/continuous-deployment-xbap-application/)
- [**](https://www.linkedin.com/shareArticle?mini=true&url=https://blogs.incyclesoftware.com/2013/02/continuous-deployment-xbap-application/&title=&summary=&source=)
- [**](https://twitter.com/home?status=)
- [**](mailto:?&subject=https://blogs.incyclesoftware.com/2013/02/continuous-deployment-xbap-application/&body=https://blogs.incyclesoftware.com/2013/02/continuous-deployment-xbap-application/)

**

![header-picture](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/woman-notebook-working-girl.png "header-picture")

Normal publishing methods to deploy XBAP application are not well suited for best practices of release management. XBAP applications are usually published from Visual Studio (or from TFS Team Build) to one specific environment. Multiple publishing of the same build to different environments becomes problematic because of the hashing contained in the manifest files. This document will described how publishing to multiple environments can be achieved using InRelease.

#### Prerequisites

Here are some prerequisites in order to make this automated deployment work. In InRelease, a Release Path has already been created and is ready to be used.

### Publishing XBAP application through the build process

To be able to deploy an XBAP application, we need the build server to do the same logic that is done when publishing the application from Visual Studio. We therefore need to modify the build template used to build the application.

1. Navigate to the activity named **Run MSBuild for project **at this location:

![1.png](http://support.inreleasesoftware.com/attachments/token/arv0904kxht7i1j/?name=1.png)![2.png](http://support.inreleasesoftware.com/attachments/token/mewgvphstkf9d2t/?name=2.png)

2. Change the property **CommandLineArguments** to

> String.Format("/p:SkipInvalidConfigurations=true /Target:Publish;Build /p:PublishDir=""{0}/PublishedFiles/"" {1}", outputDirectory, MSBuildArguments)

3. Set up a build definition that uses the modified build template. Edit Build Definition, select Process, click New…, Select an existing XAML file, and Browse to the newly defined xaml file.

![3.png](http://support.inreleasesoftware.com/attachments/token/eq7ktq5b62chupc/?name=3.png)

4. If you use a Deployement Web Page, more changes needs to be done to the build template (see next two sections). Else, follow the next two sections before triggering a build.

### Publishing Dependencies (Optional)

In an XBAP project, it is possible to identify different dependencies and ask the build process to generate a setup.exe file. This is accomplished automatically when building if the following option was checked.

![4.png](http://support.inreleasesoftware.com/attachments/token/c0oeb5bkdd1b4zj/?name=4.png)

When building the project, it will generate a setup.exe file. In this case, the command executed by the XBAP Deployer tool will have to include a parameter identifying the setup URL (see section Tool, parameter -*url*)

### Deployment Web Page (Optional)

While publishing the XBAP project through Visual Studio, it is possible to generate a **deployment web page**. This is part in the publishing step done by Visual Studio. Since we now process this step in TFS, the deployment web page cannot be produced during the TFS build. It will need to be already part of the solution in order to have it in the drop folder. Follow these steps to do so.

1. Generate a deployment web page file for the project once. To achieve this, you will need to set your Publish options like shown in the following image.

![5.png](http://support.inreleasesoftware.com/attachments/token/jqelieth6qzabaz/?name=5.png)

2. Publish the application and the file will be available from the published folder.

![6.png](http://support.inreleasesoftware.com/attachments/token/d1sh1vrk7qk7roz/?name=6.png)

3. In Windows explorer, add a folder named **Publish** at your solution level and add the generated **deployment web page **file in it.

![7.png](http://support.inreleasesoftware.com/attachments/token/u9autgkjyr0ximo/?name=7.png)

4. Add a corresponding solution folder named **Publish**. Select **Add an Existing Item** and add the file in it.

![8.png](http://support.inreleasesoftware.com/attachments/token/htypvweyshz2sgm/?name=8.png)

5. Modify the build template by navigating to this location :

![9.png](http://support.inreleasesoftware.com/attachments/token/g6vsjbjijgybajw/?name=9.png)![10.png](http://support.inreleasesoftware.com/attachments/token/a6e2rxtnsxed71v/?name=10.png)

 

6. Add an InvokeProcess task after **If BuildSettings.HasProjectsToBuild**.

![11.png](http://support.inreleasesoftware.com/attachments/token/ysbu8urrtgjxnli/?name=11.png)

7. Set the following properties for the newly added task:

**Arguments:** """" + Path.Combine(SourcesDirectory, "Publish") + """ """ + Path.Combine(BinariesDirectory, "PublishedFiles") + """"

**Display Name:** Copy deployment web page file

**FileName:** "xcopy"

Note that the arguments set in the Copy action is based on the build definition used having its **Source Control Folder** set at the solution root and the **Build Agent Folder** at the root of the source directory:

![12.png](http://support.inreleasesoftware.com/attachments/token/fttkwo0vn7jnjur/?name=12.png)

### Working with a Signed Manifest (Optional)

If you need to have your manifests signed after publishing the application, the following steps will need to be done:

1. Add the certificate file in your XBAP project’s root (.pfx file).

![13.png](http://support.inreleasesoftware.com/attachments/token/c9xmbdqxy1ebtho/?name=13.png)

2. In the properties of this file, set the following:

![13.1.png](http://support.inreleasesoftware.com/attachments/token/vq4qsc0qpp4l05v/?name=13.1.png)

3. Use the –cf arguments in the XBAP Deployer tool (see section Tool).

### InRelease Configuration

Now that the TFS Drop Location contains all the needed files, we can configure the necessary InRelease objects to be able to deploy the database.

#### Components

In order to automate the deployment of an XBAP package, a component is required. This component will use InRelease’s XBAP Deployer tool to modify the configuration files, resign the manifests if needed and finally rehash the manifests to make sure they are kept valid.

1. Create a new component (**Configure Apps | Components**, click **New**).

2. In **Source** tab, select the source where the XBAP application is located. Also, in the field **Path to package**, input “**PublishedFiles**” to indicate that only this sub-folder is to be copied over to the InRelease Deployer temp location when deploying that component.

3. In **Deployment** tab, select the Tool **XBAP Deployer**.

4. Verify/adjust the Arguments (see previous section). For example:

> -pn __ProjectName__ -d __Installation Path__

5. Set the **Variable Replacement Mode** to **Before Installation** if any variables are used as token in your configuration files. Configuration variables need to be replaced prior to running the XBAP Deployer tool since rehashing (done by the tool) needs to happen after the configuration files have been modified.

6. The **File Extension Filter** is set to the matching pattern needed. Be careful here since an XBAP publishing action (if configured using default options) adds the extension **.deploy** to all files contained in the package. If you are using this convention, add it as well in the **File Extension Filter**.

![15.png](http://support.inreleasesoftware.com/attachments/token/mv71nx23ytcb1wg/?name=15.png)

#### Release Template

Now that the component is created, we will use it within an Release Template.

1. Create a new Release Template (**Configure Apps | Release Templates**, click **New**).

2. Select the Build Definition that was created earlier and then **Create**.

3. In the toolbox, right-click on the **Component** link, select **Add **and then **Link** the component just created.

4. In the Deployment Sequence section, add the new component in the destination server and adjust the configuration variables values.

#### Deployment

A **Release** can then be created and started. This will deploy the XBAP package to the destination folder defined by the **Installation Path** configuration variable.

 Topics: [InRelease](https://blogs.incyclesoftware.com/topic/inrelease)

---

### Recent Posts

By InCycle - 05 February, 2013

#### InCycle Wins Prestigious Microsoft Global Partner of the Year Award

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/incycle-wins-prestigious-microsoft-global-partner-of-the-year-award)

By InCycle - 05 February, 2013

#### Top 5 Questions On Elevate for App Modernization

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/top-five-questions-on-elevate-for-app-modernization)

By InCycle - 05 February, 2013

#### GitHub Universe 2025 Top Announcements

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/github-universe-2025-top-announcements)

---

### Subscribe to Blog

### ![2025 Microsoft Partner of the Year Winner: InCycle Software](https://blogs.incyclesoftware.com/hs-fs/hubfs/InCycle%202025%20Microsoft%20PoY%20Badge.png?width=377&height=223&name=InCycle%202025%20Microsoft%20PoY%20Badge.png)

### About this blog

Since 2002, InCycle has been providing challenging thought leadership to help customers successfully combine modern application designs, IT platforms and DevOps practices to achieve new levels of success. As a leader in app modernization, these blogs are written by our expert consultants and provide useful information to help on your journey to the cloud and better software. Happy reading!

### Platform Engineering Webinar on Demand

PE deep dive and demo!

[![Learn More!](https://no-cache.hubspot.com/cta/default/707613/aae0556f-2d26-4ce4-9b32-e7bebd443c9a.png)](https://cta-redirect.hubspot.com/cta/redirect/707613/aae0556f-2d26-4ce4-9b32-e7bebd443c9a)

### Recent Posts

### Migrating to GitHub?

Start with a GitHub Migration Strategy and Roadmap (at no cost!)

[![Learn More!](https://no-cache.hubspot.com/cta/default/707613/312dc03f-1f78-4907-aaaf-3c0aa3cccd8f.png)](https://cta-redirect.hubspot.com/cta/redirect/707613/312dc03f-1f78-4907-aaaf-3c0aa3cccd8f)

### Posts by Topic

- [Blog (194)](https://blogs.incyclesoftware.com/topic/blog)
- [Video (32)](https://blogs.incyclesoftware.com/topic/video)
- [Azure (25)](https://blogs.incyclesoftware.com/topic/azure)
- [DevOps (20)](https://blogs.incyclesoftware.com/topic/devops)
- [GitHub (13)](https://blogs.incyclesoftware.com/topic/github)
- [InRelease (12)](https://blogs.incyclesoftware.com/topic/inrelease)
- [Containers (11)](https://blogs.incyclesoftware.com/topic/containers)
- [release management (11)](https://blogs.incyclesoftware.com/topic/release-management)
- [AKS (10)](https://blogs.incyclesoftware.com/topic/aks)
- [CI/CD (10)](https://blogs.incyclesoftware.com/topic/ci-cd)
- [Kubernetes (10)](https://blogs.incyclesoftware.com/topic/kubernetes)
- [Azure DevOps (9)](https://blogs.incyclesoftware.com/topic/azure-devops)
- [Migration (9)](https://blogs.incyclesoftware.com/topic/migration)
- [Platform Engineering (PE) (9)](https://blogs.incyclesoftware.com/topic/platform-engineering-pe)
- [GenAI (8)](https://blogs.incyclesoftware.com/topic/genai)
- [Microsoft Azure (8)](https://blogs.incyclesoftware.com/topic/microsoft-azure)
- [Visual Studio (8)](https://blogs.incyclesoftware.com/topic/visual-studio)
- [tfs (8)](https://blogs.incyclesoftware.com/topic/tfs)
- [Awards (7)](https://blogs.incyclesoftware.com/topic/awards)
- [Big Data (6)](https://blogs.incyclesoftware.com/topic/big-data)
- [Innovation (6)](https://blogs.incyclesoftware.com/topic/innovation)
- [Microsoft (6)](https://blogs.incyclesoftware.com/topic/microsoft)
- [agile (6)](https://blogs.incyclesoftware.com/topic/agile)
- [vsts (6)](https://blogs.incyclesoftware.com/topic/vsts)
- [Data (5)](https://blogs.incyclesoftware.com/topic/data)
- [Modernization (5)](https://blogs.incyclesoftware.com/topic/modernization)
- [App Modernization (4)](https://blogs.incyclesoftware.com/topic/app-modernization)
- [Automated Testing (4)](https://blogs.incyclesoftware.com/topic/automated-testing)
- [Data & AI (4)](https://blogs.incyclesoftware.com/topic/data-ai)
- [Event (4)](https://blogs.incyclesoftware.com/topic/event)
- [MLOps (4)](https://blogs.incyclesoftware.com/topic/mlops)
- [Modern Apps (4)](https://blogs.incyclesoftware.com/topic/modern-apps)
- [Visual Studio 2017 (4)](https://blogs.incyclesoftware.com/topic/visual-studio-2017)
- [DevTest (3)](https://blogs.incyclesoftware.com/topic/devtest)
- [Events (3)](https://blogs.incyclesoftware.com/topic/events)
- [Governance (3)](https://blogs.incyclesoftware.com/topic/governance)
- [VSO (3)](https://blogs.incyclesoftware.com/topic/vso)
- [Data Analytics (2)](https://blogs.incyclesoftware.com/topic/data-analytics)
- [Docker (2)](https://blogs.incyclesoftware.com/topic/docker)
- [Integration (2)](https://blogs.incyclesoftware.com/topic/integration)
- [Microsoft Connect (2)](https://blogs.incyclesoftware.com/topic/microsoft-connect)
- [Mobile Development (2)](https://blogs.incyclesoftware.com/topic/mobile-development)
- [RM (2)](https://blogs.incyclesoftware.com/topic/rm)
- [SQL (2)](https://blogs.incyclesoftware.com/topic/sql)
- [SaaS (2)](https://blogs.incyclesoftware.com/topic/saas)
- [TFS 15 Preview (2)](https://blogs.incyclesoftware.com/topic/tfs-15-preview)
- [TFS 2017 (2)](https://blogs.incyclesoftware.com/topic/tfs-2017)
- [Uncategorized (2)](https://blogs.incyclesoftware.com/topic/uncategorized)
- [Visual Studio 2015 (2)](https://blogs.incyclesoftware.com/topic/visual-studio-2015)
- [Xamarin (2)](https://blogs.incyclesoftware.com/topic/xamarin)
- [ADX (1)](https://blogs.incyclesoftware.com/topic/adx)
- [AI (1)](https://blogs.incyclesoftware.com/topic/ai)
- [Android (1)](https://blogs.incyclesoftware.com/topic/android)
- [Application Monitoring (1)](https://blogs.incyclesoftware.com/topic/application-monitoring)
- [Apps (1)](https://blogs.incyclesoftware.com/topic/apps)
- [BI (1)](https://blogs.incyclesoftware.com/topic/bi)
- [Brian Harry (1)](https://blogs.incyclesoftware.com/topic/brian-harry)
- [Cloud Azure (1)](https://blogs.incyclesoftware.com/topic/cloud-azure)
- [Cloud Services (1)](https://blogs.incyclesoftware.com/topic/cloud-services)
- [Connect (1)](https://blogs.incyclesoftware.com/topic/connect)
- [Connect 2016 (1)](https://blogs.incyclesoftware.com/topic/connect-2016)
- [Consultants (1)](https://blogs.incyclesoftware.com/topic/consultants)
- [Cosmos DB (1)](https://blogs.incyclesoftware.com/topic/cosmos-db)
- [Data Center (1)](https://blogs.incyclesoftware.com/topic/data-center)
- [Development (1)](https://blogs.incyclesoftware.com/topic/development)
- [EA (1)](https://blogs.incyclesoftware.com/topic/ea)
- [Git (1)](https://blogs.incyclesoftware.com/topic/git)
- [Hybrid (1)](https://blogs.incyclesoftware.com/topic/hybrid)
- [IntelliTes (1)](https://blogs.incyclesoftware.com/topic/intellites)
- [IntelliTest (1)](https://blogs.incyclesoftware.com/topic/intellitest)
- [Lab Management (1)](https://blogs.incyclesoftware.com/topic/lab-management)
- [Live Unit Testing (1)](https://blogs.incyclesoftware.com/topic/live-unit-testing)
- [Load Testing (1)](https://blogs.incyclesoftware.com/topic/load-testing)
- [MSDN (1)](https://blogs.incyclesoftware.com/topic/msdn)
- [MSTest (1)](https://blogs.incyclesoftware.com/topic/mstest)
- [MTM (1)](https://blogs.incyclesoftware.com/topic/mtm)
- [Machine Learning (1)](https://blogs.incyclesoftware.com/topic/machine-learning)
- [Media & Entertainment (1)](https://blogs.incyclesoftware.com/topic/media-entertainment)
- [Microsoft Visual Studio (1)](https://blogs.incyclesoftware.com/topic/microsoft-visual-studio)
- [Microsoft nationally managed partner (1)](https://blogs.incyclesoftware.com/topic/microsoft-nationally-managed-partner)
- [NUnit (1)](https://blogs.incyclesoftware.com/topic/nunit)
- [OpsHub (1)](https://blogs.incyclesoftware.com/topic/opshub)
- [PaaS (1)](https://blogs.incyclesoftware.com/topic/paas)
- [Pipelines (1)](https://blogs.incyclesoftware.com/topic/pipelines)
- [PowerShell (1)](https://blogs.incyclesoftware.com/topic/powershell)
- [Principles and Practices of DevOps (1)](https://blogs.incyclesoftware.com/topic/principles-and-practices-of-devops)
- [Programs (1)](https://blogs.incyclesoftware.com/topic/programs)
- [RC (1)](https://blogs.incyclesoftware.com/topic/rc)
- [Release Candidate (1)](https://blogs.incyclesoftware.com/topic/release-candidate)
- [SQL Databases (1)](https://blogs.incyclesoftware.com/topic/sql-databases)
- [SQL server (1)](https://blogs.incyclesoftware.com/topic/sql-server)
- [SSDT (1)](https://blogs.incyclesoftware.com/topic/ssdt)
- [Software (1)](https://blogs.incyclesoftware.com/topic/software)
- [Subscription & Billing Management (1)](https://blogs.incyclesoftware.com/topic/subscription-billing-management)
- [TFS 15 (1)](https://blogs.incyclesoftware.com/topic/tfs-15)
- [TFS 2015 update (1)](https://blogs.incyclesoftware.com/topic/tfs-2015-update)
- [TFS 2016 (1)](https://blogs.incyclesoftware.com/topic/tfs-2016)
- [TFS ALM (1)](https://blogs.incyclesoftware.com/topic/tfs-alm)
- [TestMethods (1)](https://blogs.incyclesoftware.com/topic/testmethods)
- [UI (1)](https://blogs.incyclesoftware.com/topic/ui)
- [UX (1)](https://blogs.incyclesoftware.com/topic/ux)
- [VS2017 (1)](https://blogs.incyclesoftware.com/topic/vs2017)
- [Validation (1)](https://blogs.incyclesoftware.com/topic/validation)
- [Virtual Machines (1)](https://blogs.incyclesoftware.com/topic/virtual-machines)
- [WPC 2016 (1)](https://blogs.incyclesoftware.com/topic/wpc-2016)
- [Web (1)](https://blogs.incyclesoftware.com/topic/web)
- [Windows (1)](https://blogs.incyclesoftware.com/topic/windows)
- [World Partner Conference (1)](https://blogs.incyclesoftware.com/topic/world-partner-conference)
- [XUnit (1)](https://blogs.incyclesoftware.com/topic/xunit)
- [alm (1)](https://blogs.incyclesoftware.com/topic/alm)
- [automation (1)](https://blogs.incyclesoftware.com/topic/automation)
- [build (1)](https://blogs.incyclesoftware.com/topic/build)
- [code (1)](https://blogs.incyclesoftware.com/topic/code)
- [nationally managed partner (1)](https://blogs.incyclesoftware.com/topic/nationally-managed-partner)
- [sql server 2008 (1)](https://blogs.incyclesoftware.com/topic/sql-server-2008)
- [unit testing (1)](https://blogs.incyclesoftware.com/topic/unit-testing)
- [vm (1)](https://blogs.incyclesoftware.com/topic/vm)

[see all](https://blogs.incyclesoftware.com/2013/02/continuous-deployment-xbap-application/#)

### Blog Archive

- [November 2012 (17)](https://blogs.incyclesoftware.com/archive/2012/11)
- [September 2025 (14)](https://blogs.incyclesoftware.com/archive/2025/09)
- [October 2014 (12)](https://blogs.incyclesoftware.com/archive/2014/10)
- [July 2012 (10)](https://blogs.incyclesoftware.com/archive/2012/07)
- [October 2012 (9)](https://blogs.incyclesoftware.com/archive/2012/10)

- [**](https://twitter.com/incyclesoftware?lang=en)
- [**](https://ca.linkedin.com/company/incycle-software)
- [**](https://www.facebook.com/InCycleSoftware/)

### About us

At InCycle, we believe there is always a better way and today, that includes the cloud.

[![InCycle Microsoft Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Incycle%202017%20website%20resources/logo-InCycle-New-white.png?width=200&name=logo-InCycle-New-white.png "InCycle Microsoft Partner")](https://www.incyclesoftware.com/)

### Learn more

- [Why Incycle?](https://www.incyclesoftware.com/why-incycle)
- [Success Stories](https://www.incyclesoftware.com/customer-success-stories)
- [Events](https://www.incyclesoftware.com/events)
- [Careers](https://www.incyclesoftware.com/careers)
- [About](https://www.incyclesoftware.com/about-incycle-software)

 

### 1-800-565-0510 [info@incyclesoftware.com](mailto:info@incyclesoftware.com) 

### ![Microsoft GitHub Verified Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/GitHub%20Verified%20Partner%20-%20white-SQUARE.png?width=256&height=57&name=GitHub%20Verified%20Partner%20-%20white-SQUARE.png) ![Data & AI Solutions Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Data%20%26%20AI%20Solutions%20Partner.png?width=125&height=144&name=Data%20%26%20AI%20Solutions%20Partner.png) ![Digital & App Innovation Solutions Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Digital%20%26%20App%20Innovation%20Solutions%20Partner.png?width=125&height=144&name=Digital%20%26%20App%20Innovation%20Solutions%20Partner.png)

 

© 2025 InCycle Software

[Privacy policy](https://www.incyclesoftware.com/privacy)

**

![](https://px.ads.linkedin.com/collect/?pid=302756&fmt=gif) ![](https://px.ads.linkedin.com/collect/?pid=302756&fmt=gif)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "InRelease",
    "url" : "https://blogs.incyclesoftware.com/author/inrelease"
  },
  "datePublished" : "2013-02-05T13:27:30.000Z",
  "headline" : "Continuous Deployment of an XBAP application",
  "image" : [ "http://support.inreleasesoftware.com/attachments/token/arv0904kxht7i1j/?name=1.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blogs.incyclesoftware.com/2013/02/continuous-deployment-xbap-application/",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blogs.incyclesoftware.com/hubfs/logo-InCycle-New-Blue---transparent.png"
    },
    "name" : "InCycle Software Inc."
  }
}
```