<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Code Smart Not Hard - Visual Studio 2010</title>
    <link>http://codesmartnothard.com/</link>
    <description>Team Foundation Server, Frameworks, and Code Generation</description>
    <language>en-us</language>
    <copyright>Michael Douglas</copyright>
    <lastBuildDate>Sat, 21 Aug 2010 14:40:00 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>mike@doitconsultants.com</managingEditor>
    <webMaster>mike@doitconsultants.com</webMaster>
    <item>
      <trackback:ping>http://codesmartnothard.com/Trackback.aspx?guid=dee06f60-9d96-429f-86b5-7f194f100666</trackback:ping>
      <pingback:server>http://codesmartnothard.com/pingback.aspx</pingback:server>
      <pingback:target>http://codesmartnothard.com/PermaLink,guid,dee06f60-9d96-429f-86b5-7f194f100666.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://codesmartnothard.com/CommentView,guid,dee06f60-9d96-429f-86b5-7f194f100666.aspx</wfw:comment>
      <wfw:commentRss>http://codesmartnothard.com/SyndicationService.asmx/GetEntryCommentsRss?guid=dee06f60-9d96-429f-86b5-7f194f100666</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the most exciting things to me in Visual Studio 2010 ALM is the elimination
of silos around development, project management, and quality assurance.  In previous
version these roles and activities were isolated and disconnected with little traceability
between them.  
</p>
        <p>
In Visual Studio 2010 ALM these silos are removed and there is now traceability across
the developer, project management, and quality assurance roles because of the emphasis
around testing in Visual Studio 2010. The introduction of Microsoft Test Manager,
included with Visual Studio 2010 Ultimate and Visual Studio 2010 Test Professional,
to create and manage Test Plans and manually run Test Cases has filled a much needed
gap in the ALM space.
</p>
        <p>
To visualize the traceability, we have created the Visual Studio 2010 ALM Traceability
Matrix to show the relationships between the major work items/artifacts in Visual
Studio 2010 ALM. This could include additional links between these items, but we have
not included every possible combination for readability. What I found with this matrix
helps people relate this to their own environment and start seeing benefits of having
all of this information centralized utilizing Visual Studio 2010 ALM and Team Foundation
Server (TFS) 2010.  Below the matrix are some examples of questions that can
be answered by TFS related to traceability between these items.  The data warehouse
in TFS 2010 can be used to answer many more questions for every level of your organization. 
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/Visualstudio2010almTraceability_1458C/image_2.png">
            <img style="border-right-width: 0px; margin: 5px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Visual Studio 2010 ALM Traceability Matrix" border="0" alt="Visual Studio 2010 ALM Traceability Matrix" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/Visualstudio2010almTraceability_1458C/image_thumb.png" width="500" height="573" />
          </a>
        </p>
        <p>
          <strong>User Stories (1) 
<br /></strong>How many hours of remaining work are left for this User Story? 
<br />
Who are the developers working on this User Story? 
<br />
Is the User Story covered by test cases? 
<br />
Are the tests passing for the User Story? 
<br />
Is the User Story done?
</p>
        <p>
          <strong>Tasks (2) 
<br /></strong>What bugs have been fixed for a User Story? 
<br />
Is the task complete so the test case be moved to ready?
</p>
        <p>
          <strong>Test Plan (3)</strong>
          <br />
What stories are in a Test Plan/Iteration? 
<br />
How many automated tests are in the the Test Plan? 
<br />
How many tests are passing in this Iteration/release/test plan from the previous one? 
<br />
How many bugs were fixed?
</p>
        <p>
          <strong>Test Suites (4) 
<br /></strong>What are the group of test cases for the User Story?
</p>
        <p>
          <strong>Test Cases (5) 
<br /></strong>Are all of the tests passing for a particular Iteration/Test Plan? 
<br />
How many iterations has this test been passing?
</p>
        <p>
          <strong>Automate Tests (6)</strong>
          <br />
How many tests are automated for a User Story or Iteration/Test Plan? 
<br />
Are there are any regression tests failing? 
<br />
What is the test coverage for User Stories?
</p>
        <p>
          <strong>Code/Changesets (7)</strong>
          <br />
What changesets are included in this build?  
<br />
What tests are impacted by this check-in? 
<br />
What is the User Story and Test Plan for this changeset? 
<br />
Has this changeset been released?
</p>
        <p>
          <strong>Builds (8) 
<br /></strong>What test cases are impacted by the code changes in this build? 
<br />
What build is being used to run the tests against? 
<br />
What User Stories and/or Test Cases have been tested by this build?
</p>
        <p>
What kind of questions come to mind for your organization around these items? 
Send me your thoughts or questions to <a href="mailto:tfs@deliveron.com" target="_blank">tfs@deliveron.com</a></p>
        <p>
        </p>
        <p>
Mike
</p>
        <p>
This is a cross post of <a title="http://www.deliveron.com/blog/post/Visual-Studio-2010-ALM-Traceability.aspx" href="http://www.deliveron.com/blog/post/Visual-Studio-2010-ALM-Traceability.aspx">http://www.deliveron.com/blog/post/Visual-Studio-2010-ALM-Traceability.aspx</a></p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=dee06f60-9d96-429f-86b5-7f194f100666" />
      </body>
      <title>Visual Studio 2010 ALM Traceability</title>
      <guid isPermaLink="false">http://codesmartnothard.com/PermaLink,guid,dee06f60-9d96-429f-86b5-7f194f100666.aspx</guid>
      <link>http://codesmartnothard.com/VisualStudio2010ALMTraceability.aspx</link>
      <pubDate>Sat, 21 Aug 2010 14:40:00 GMT</pubDate>
      <description>&lt;p&gt;
One of the most exciting things to me in Visual Studio 2010 ALM is the elimination
of silos around development, project management, and quality assurance.&amp;#160; In previous
version these roles and activities were isolated and disconnected with little traceability
between them.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
In Visual Studio 2010 ALM these silos are removed and there is now traceability across
the developer, project management, and quality assurance roles because of the emphasis
around testing in Visual Studio 2010. The introduction of Microsoft Test Manager,
included with Visual Studio 2010 Ultimate and Visual Studio 2010 Test Professional,
to create and manage Test Plans and manually run Test Cases has filled a much needed
gap in the ALM space.
&lt;/p&gt;
&lt;p&gt;
To visualize the traceability, we have created the Visual Studio 2010 ALM Traceability
Matrix to show the relationships between the major work items/artifacts in Visual
Studio 2010 ALM. This could include additional links between these items, but we have
not included every possible combination for readability. What I found with this matrix
helps people relate this to their own environment and start seeing benefits of having
all of this information centralized utilizing Visual Studio 2010 ALM and Team Foundation
Server (TFS) 2010.&amp;#160; Below the matrix are some examples of questions that can
be answered by TFS related to traceability between these items.&amp;#160; The data warehouse
in TFS 2010 can be used to answer many more questions for every level of your organization. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/Visualstudio2010almTraceability_1458C/image_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Visual Studio 2010 ALM Traceability Matrix" border="0" alt="Visual Studio 2010 ALM Traceability Matrix" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/Visualstudio2010almTraceability_1458C/image_thumb.png" width="500" height="573" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;User Stories (1) 
&lt;br /&gt;
&lt;/strong&gt;How many hours of remaining work are left for this User Story? 
&lt;br /&gt;
Who are the developers working on this User Story? 
&lt;br /&gt;
Is the User Story covered by test cases? 
&lt;br /&gt;
Are the tests passing for the User Story? 
&lt;br /&gt;
Is the User Story done?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Tasks (2) 
&lt;br /&gt;
&lt;/strong&gt;What bugs have been fixed for a User Story? 
&lt;br /&gt;
Is the task complete so the test case be moved to ready?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Test Plan (3)&lt;/strong&gt; 
&lt;br /&gt;
What stories are in a Test Plan/Iteration? 
&lt;br /&gt;
How many automated tests are in the the Test Plan? 
&lt;br /&gt;
How many tests are passing in this Iteration/release/test plan from the previous one? 
&lt;br /&gt;
How many bugs were fixed?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Test Suites (4) 
&lt;br /&gt;
&lt;/strong&gt;What are the group of test cases for the User Story?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Test Cases (5) 
&lt;br /&gt;
&lt;/strong&gt;Are all of the tests passing for a particular Iteration/Test Plan? 
&lt;br /&gt;
How many iterations has this test been passing?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Automate Tests (6)&lt;/strong&gt; 
&lt;br /&gt;
How many tests are automated for a User Story or Iteration/Test Plan? 
&lt;br /&gt;
Are there are any regression tests failing? 
&lt;br /&gt;
What is the test coverage for User Stories?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Code/Changesets (7)&lt;/strong&gt; 
&lt;br /&gt;
What changesets are included in this build?&amp;#160; 
&lt;br /&gt;
What tests are impacted by this check-in? 
&lt;br /&gt;
What is the User Story and Test Plan for this changeset? 
&lt;br /&gt;
Has this changeset been released?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Builds (8) 
&lt;br /&gt;
&lt;/strong&gt;What test cases are impacted by the code changes in this build? 
&lt;br /&gt;
What build is being used to run the tests against? 
&lt;br /&gt;
What User Stories and/or Test Cases have been tested by this build?
&lt;/p&gt;
&lt;p&gt;
What kind of questions come to mind for your organization around these items?&amp;#160;
Send me your thoughts or questions to &lt;a href="mailto:tfs@deliveron.com" target="_blank"&gt;tfs@deliveron.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Mike
&lt;/p&gt;
&lt;p&gt;
This is a cross post of &lt;a title="http://www.deliveron.com/blog/post/Visual-Studio-2010-ALM-Traceability.aspx" href="http://www.deliveron.com/blog/post/Visual-Studio-2010-ALM-Traceability.aspx"&gt;http://www.deliveron.com/blog/post/Visual-Studio-2010-ALM-Traceability.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=dee06f60-9d96-429f-86b5-7f194f100666" /&gt;</description>
      <comments>http://codesmartnothard.com/CommentView,guid,dee06f60-9d96-429f-86b5-7f194f100666.aspx</comments>
      <category>ALM;TFS 2010;Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://codesmartnothard.com/Trackback.aspx?guid=4d763950-5662-4d9f-ae2e-5472c8f8bb4b</trackback:ping>
      <pingback:server>http://codesmartnothard.com/pingback.aspx</pingback:server>
      <pingback:target>http://codesmartnothard.com/PermaLink,guid,4d763950-5662-4d9f-ae2e-5472c8f8bb4b.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://codesmartnothard.com/CommentView,guid,4d763950-5662-4d9f-ae2e-5472c8f8bb4b.aspx</wfw:comment>
      <wfw:commentRss>http://codesmartnothard.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4d763950-5662-4d9f-ae2e-5472c8f8bb4b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today I have released Team Deploy 2010 for Team Foundation Server 2010.  In this
post, I am going to give a quick overview of Team Deploy if you haven’t used it before,
explain this release and upcoming releases, compare it to Lab Management 2010, and
give a walkthrough for setting it up and uninstalling it.
</p>
        <h4>What is Team Deploy?
</h4>
        <p>
Team Deploy is a set of custom build activities used to deploy MSIs to multiple client
PCs and/or deploy services to servers.  This activities include the ability to
kill processes, start/stop services, pass in arguments to the MSIs, provide the service
username/password, and uninstall previous versions.  Team Deploy uses SysInternal’s
PSTools to remotely execute MSIEXEC to install the MSIs and PSKill to kill processes. 
By using Team Deploy, development teams can create automated build and deploy processes
for better configuration management.  Deployments can be done on demand or scheduled
just like any other build in Team Build.  If you are using Team Foundation Server
2008, Team Deploy 2.1 is the current release to download.  Team Deploy is open
source and free to use.  It can be downloaded from <a href="http://teamdeploy.codeplex.com">http://teamdeploy.codeplex.com</a></p>
        <h4>This Release and Future Plans
</h4>
        <p>
I am calling this version of Team Deploy 2010, Release 1.  This release is a
1 for 1 port of the MSBuild tasks to Workflow custom activities.  I wanted to
release this version without any additional enhancements so development teams can
upgrade their build definitions to workflow.  I have a lot ideas for future versions. 
Lab Management 2010 has given me some ideas (see comparison below) and there are several
other things I want to do.  Here is a list of some:
</p>
        <ul>
          <li>
            <strong>MSI Package for Team Deploy 2010</strong> – For custom build tasks, deployments
are easy.  Basically just copy the Dll to the MSBuilds folder and use that path
in the build definitions.  For Team Build custom activities, it is a little more
complicated.  As you will see in the Setup Walkthrough below, there are several
steps that are fairly easy to do manually but are going to be more difficult to do
with a custom task.  I have begun working on this but it wasn’t ready for this
release.</li>
          <li>
            <strong>Breakout Deploy activity into Workflow</strong> – Currently the Deploy activity
does all the work and calls the other activities within code.  I want to create
an additional workflow with all of these steps in a workflow.</li>
          <li>
            <strong>PowerShell capabilities</strong> – PowerShell 2.0 has the ability to be run
on remote machines.  I want to research this functionality and see if it makes
sense to create an addition set of activities that use PowerShell instead of PSTools.</li>
          <li>
            <strong>Custom Build Definition Screen </strong>– Display screen to create the deployment
options through the UI instead of creating it in XML today.</li>
          <li>
            <strong>Change the Threadpool to .Net 4 Tasks</strong> for deploying to multiple machines
at the same time.</li>
          <li>
            <strong>Team Deploy build definition to call another definition</strong> to 
do the build and deploy (Similar to Lab Management)</li>
        </ul>
        <h4>Team Deploy and Lab Management
</h4>
        <p>
Visual Studio 2010 introduces an additional product for Team Foundation Server 2010
called Lab Management 2010.  This product allows virtual environments be created,
quickly provisioned, used for manual and automated testing.  Lab Management also
includes a new build definition type and activities.  With the build definition
type, it allows you to revert the virtual environment to a baseline snapshot, build
the application, deploy the application, run the automated tests, and capture the
results.  So Lab Management can do what Team Deploy can do and a lot more.  
The one area that I have seen Team Deploy used where Lab Management would not be used
is for deploying applications to QA and Production.  I have worked with several
companies that use Team Deploy to deploy to all of their environments for a consistent
deployment process.
</p>
        <h4>Team Deploy Setup
</h4>
        <p>
Here are the steps to install Team Deploy and create a simple build.
</p>
        <p>
1. The TeamDeploy2010_R1.zip file contains the following 4 files that are used to
install the application.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_2.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb.png" width="230" height="130" />
          </a>
        </p>
        <p>
2. Copy TeamDeploy.Activities.* to a location in source control and check in.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_4.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_1.png" width="404" height="101" />
          </a>
        </p>
        <p>
3. Add TeamDeploy.Activities.dll to the GAC using Gacutil.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_6.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_2.png" width="504" height="264" />
          </a>
        </p>
        <p>
4. Add source control location of custom assemblies to build controller.  ($/TestBuilds/CustomActivities
in this example)
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_8.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_3.png" width="504" height="466" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
5. Copy DeployTemplate.xaml to source control in the BuildProcessTemplates folder.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_10.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_4.png" width="504" height="129" />
          </a>
        </p>
        <p>
6. Create a new build definition.  In the Process Step click on “New” Template
and add the existing DeployTemplate.xaml template that was added to source control. 
Click OK.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_12.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_5.png" width="404" height="410" />
          </a>
        </p>
        <p>
7. Set the build properties to where the PSTools is installed and where the deployment
XML is located. Click Save.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_14.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_6.png" width="404" height="286" />
          </a>
        </p>
        <p>
8. Rename and edit SampleDeployScript.xml to specify applications to install and machines
to deploy to.  See <a href="http://teamdeploy.codeplex.com">http://teamdeploy.codeplex.com</a> website
for full list of options available. If you open the DeployTemplate.xaml.  It
should look like this.  
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_16.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_7.png" width="504" height="239" />
          </a> 
</p>
        <p>
If there is an error for the deploy activity.  Delete the AgentScope activity.
</p>
        <p>
1.  Add Team Deploy 2010 Activities by right clicking in the toolbox and select
“Choose Items…”. Make sure System.Activities Components tab is selected and select
“Browse…” to find the location of the TeamDeploy.Activities.dll and choose it.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_18.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_8.png" width="504" height="350" />
          </a>
        </p>
        <p>
  2. Once you have added the TeamDeploy.Activities.dll, you will see the activities
selected.  Click Ok.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_20.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_9.png" width="504" height="366" />
          </a>
        </p>
        <p>
        </p>
        <p>
3. Clicking Ok will add the activities to the toolbox. Drag the Deploy activity to
the AgentScope container.  The required properties will cause a red error icon
to display.  Fill out the properties to where you have the deployment script
and PSTools installed. (Sometimes the designer won’t let you drag the Deploy activity
to the canvas.  Save the workflow, exit Visual Studio 2010, and reopen the workflow. 
It should then.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_22.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_10.png" width="504" height="239" />
          </a>
        </p>
        <h4>Uninstalling or Updating Team Deploy 2010
</h4>
        <p>
1. Close Visual Studio 2010
</p>
        <p>
2. Stop the Visual Studio Team Foundation Build Service Host service.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_24.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_11.png" width="504" height="212" />
          </a>
        </p>
        <p>
3. To remove Team Deploy from the GAC, browse to c:\windows\microsoft.net\assembly\gac_msil
and delete the TeamDeploy.Activities folder.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_26.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_12.png" width="504" height="304" />
          </a>
        </p>
        <h4>Build Log of Deploy activity in Team Build 2010
</h4>
        <p>
Here is an example of the build log for the Deploy activity.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_28.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_13.png" width="504" height="246" />
          </a>
        </p>
        <p>
I hope you enjoy!  Let me know if you have any ideas or run into problems.
</p>
        <p>
Mike
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=4d763950-5662-4d9f-ae2e-5472c8f8bb4b" />
      </body>
      <title>Team Deploy 2010 is released</title>
      <guid isPermaLink="false">http://codesmartnothard.com/PermaLink,guid,4d763950-5662-4d9f-ae2e-5472c8f8bb4b.aspx</guid>
      <link>http://codesmartnothard.com/TeamDeploy2010IsReleased.aspx</link>
      <pubDate>Fri, 28 May 2010 05:36:00 GMT</pubDate>
      <description>&lt;p&gt;
Today I have released Team Deploy 2010 for Team Foundation Server 2010.&amp;#160; In this
post, I am going to give a quick overview of Team Deploy if you haven’t used it before,
explain this release and upcoming releases, compare it to Lab Management 2010, and
give a walkthrough for setting it up and uninstalling it.
&lt;/p&gt;
&lt;h4&gt;What is Team Deploy?
&lt;/h4&gt;
&lt;p&gt;
Team Deploy is a set of custom build activities used to deploy MSIs to multiple client
PCs and/or deploy services to servers.&amp;#160; This activities include the ability to
kill processes, start/stop services, pass in arguments to the MSIs, provide the service
username/password, and uninstall previous versions.&amp;#160; Team Deploy uses SysInternal’s
PSTools to remotely execute MSIEXEC to install the MSIs and PSKill to kill processes.&amp;#160;
By using Team Deploy, development teams can create automated build and deploy processes
for better configuration management.&amp;#160; Deployments can be done on demand or scheduled
just like any other build in Team Build.&amp;#160; If you are using Team Foundation Server
2008, Team Deploy 2.1 is the current release to download.&amp;#160; Team Deploy is open
source and free to use.&amp;#160; It can be downloaded from &lt;a href="http://teamdeploy.codeplex.com"&gt;http://teamdeploy.codeplex.com&lt;/a&gt;
&lt;/p&gt;
&lt;h4&gt;This Release and Future Plans
&lt;/h4&gt;
&lt;p&gt;
I am calling this version of Team Deploy 2010, Release 1.&amp;#160; This release is a
1 for 1 port of the MSBuild tasks to Workflow custom activities.&amp;#160; I wanted to
release this version without any additional enhancements so development teams can
upgrade their build definitions to workflow.&amp;#160; I have a lot ideas for future versions.&amp;#160;
Lab Management 2010 has given me some ideas (see comparison below) and there are several
other things I want to do.&amp;#160; Here is a list of some:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MSI Package for Team Deploy 2010&lt;/strong&gt; – For custom build tasks, deployments
are easy.&amp;#160; Basically just copy the Dll to the MSBuilds folder and use that path
in the build definitions.&amp;#160; For Team Build custom activities, it is a little more
complicated.&amp;#160; As you will see in the Setup Walkthrough below, there are several
steps that are fairly easy to do manually but are going to be more difficult to do
with a custom task.&amp;#160; I have begun working on this but it wasn’t ready for this
release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breakout Deploy activity into Workflow&lt;/strong&gt; – Currently the Deploy activity
does all the work and calls the other activities within code.&amp;#160; I want to create
an additional workflow with all of these steps in a workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PowerShell capabilities&lt;/strong&gt; – PowerShell 2.0 has the ability to be run
on remote machines.&amp;#160; I want to research this functionality and see if it makes
sense to create an addition set of activities that use PowerShell instead of PSTools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Build Definition Screen &lt;/strong&gt;– Display screen to create the deployment
options through the UI instead of creating it in XML today.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change the Threadpool to .Net 4 Tasks&lt;/strong&gt; for deploying to multiple machines
at the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team Deploy build definition to call another definition&lt;/strong&gt; to&amp;#160;
do the build and deploy (Similar to Lab Management)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Team Deploy and Lab Management
&lt;/h4&gt;
&lt;p&gt;
Visual Studio 2010 introduces an additional product for Team Foundation Server 2010
called Lab Management 2010.&amp;#160; This product allows virtual environments be created,
quickly provisioned, used for manual and automated testing.&amp;#160; Lab Management also
includes a new build definition type and activities.&amp;#160; With the build definition
type, it allows you to revert the virtual environment to a baseline snapshot, build
the application, deploy the application, run the automated tests, and capture the
results.&amp;#160; So Lab Management can do what Team Deploy can do and a lot more.&amp;#160;&amp;#160;
The one area that I have seen Team Deploy used where Lab Management would not be used
is for deploying applications to QA and Production.&amp;#160; I have worked with several
companies that use Team Deploy to deploy to all of their environments for a consistent
deployment process.
&lt;/p&gt;
&lt;h4&gt;Team Deploy Setup
&lt;/h4&gt;
&lt;p&gt;
Here are the steps to install Team Deploy and create a simple build.
&lt;/p&gt;
&lt;p&gt;
1. The TeamDeploy2010_R1.zip file contains the following 4 files that are used to
install the application.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb.png" width="230" height="130" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
2. Copy TeamDeploy.Activities.* to a location in source control and check in.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_1.png" width="404" height="101" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3. Add TeamDeploy.Activities.dll to the GAC using Gacutil.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_2.png" width="504" height="264" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
4. Add source control location of custom assemblies to build controller.&amp;#160; ($/TestBuilds/CustomActivities
in this example)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_3.png" width="504" height="466" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
5. Copy DeployTemplate.xaml to source control in the BuildProcessTemplates folder.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_4.png" width="504" height="129" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
6. Create a new build definition.&amp;#160; In the Process Step click on “New” Template
and add the existing DeployTemplate.xaml template that was added to source control.&amp;#160;
Click OK.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_5.png" width="404" height="410" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
7. Set the build properties to where the PSTools is installed and where the deployment
XML is located. Click Save.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_6.png" width="404" height="286" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
8. Rename and edit SampleDeployScript.xml to specify applications to install and machines
to deploy to.&amp;#160; See &lt;a href="http://teamdeploy.codeplex.com"&gt;http://teamdeploy.codeplex.com&lt;/a&gt; website
for full list of options available. If you open the DeployTemplate.xaml.&amp;#160; It
should look like this.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_7.png" width="504" height="239" /&gt;&lt;/a&gt;&amp;#160;
&lt;/p&gt;
&lt;p&gt;
If there is an error for the deploy activity.&amp;#160; Delete the AgentScope activity.
&lt;/p&gt;
&lt;p&gt;
1.&amp;#160; Add Team Deploy 2010 Activities by right clicking in the toolbox and select
“Choose Items…”. Make sure System.Activities Components tab is selected and select
“Browse…” to find the location of the TeamDeploy.Activities.dll and choose it.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_8.png" width="504" height="350" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;#160; 2. Once you have added the TeamDeploy.Activities.dll, you will see the activities
selected.&amp;#160; Click Ok.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_9.png" width="504" height="366" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
3. Clicking Ok will add the activities to the toolbox. Drag the Deploy activity to
the AgentScope container.&amp;#160; The required properties will cause a red error icon
to display.&amp;#160; Fill out the properties to where you have the deployment script
and PSTools installed. (Sometimes the designer won’t let you drag the Deploy activity
to the canvas.&amp;#160; Save the workflow, exit Visual Studio 2010, and reopen the workflow.&amp;#160;
It should then.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_10.png" width="504" height="239" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h4&gt;Uninstalling or Updating Team Deploy 2010
&lt;/h4&gt;
&lt;p&gt;
1. Close Visual Studio 2010
&lt;/p&gt;
&lt;p&gt;
2. Stop the Visual Studio Team Foundation Build Service Host service.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_11.png" width="504" height="212" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
3. To remove Team Deploy from the GAC, browse to c:\windows\microsoft.net\assembly\gac_msil
and delete the TeamDeploy.Activities folder.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_12.png" width="504" height="304" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h4&gt;Build Log of Deploy activity in Team Build 2010
&lt;/h4&gt;
&lt;p&gt;
Here is an example of the build log for the Deploy activity.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_28.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/TeamDeploy2010isreleased_13DA0/image_thumb_13.png" width="504" height="246" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
I hope you enjoy!&amp;#160; Let me know if you have any ideas or run into problems.
&lt;/p&gt;
&lt;p&gt;
Mike
&lt;/p&gt;
&lt;img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=4d763950-5662-4d9f-ae2e-5472c8f8bb4b" /&gt;</description>
      <comments>http://codesmartnothard.com/CommentView,guid,4d763950-5662-4d9f-ae2e-5472c8f8bb4b.aspx</comments>
      <category>Team Build;Team Build 2010;Team Foundation Server;TFS 2010;Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://codesmartnothard.com/Trackback.aspx?guid=c6e1208a-2116-47c6-ae58-6a158d757d14</trackback:ping>
      <pingback:server>http://codesmartnothard.com/pingback.aspx</pingback:server>
      <pingback:target>http://codesmartnothard.com/PermaLink,guid,c6e1208a-2116-47c6-ae58-6a158d757d14.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://codesmartnothard.com/CommentView,guid,c6e1208a-2116-47c6-ae58-6a158d757d14.aspx</wfw:comment>
      <wfw:commentRss>http://codesmartnothard.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c6e1208a-2116-47c6-ae58-6a158d757d14</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’m excited to be speaking 3 times in the next month on the new testing capabilities
in Visual Studio 2010 and TFS 2010.  Two events are listed below.  The third
event is full.  I hope you can make one of them.
</p>
        <p>
Sign up for the <a href="http://www.deliveron.com/newsletters.htm" target="_blank">Deliveron
Newsletter</a> to be notified about future presentations.
</p>
        <h4>Presentation Overview
</h4>
        <p>
Visual Studio 2010 introduces Lab Management 2010 and Test Professional 2010 to remove
the silos between QA professionals and developers to establish a more cohesive development
and testing process.  Together these products include tools and features for
creating test plans, creating and running manual tests, automated UI testing, creating
test virtual environments, recording manual tests, and collecting diagnostic and error
data to easily include with bugs.  See how everyone on your development and testing
teams can take advantage of these improvements
</p>
        <h4>Omaha Team System User Group Meeting
</h4>
        <p>
March 23, 2010 at 6:00pm 
<br />
Farm Credit Services of America 
<br />
5015 S 118th St 
<br />
Omaha, NE 68137 
<br /><a href="http://www.funwith.net/Events.aspx?ID=72" target="_blank">Register here</a></p>
        <h4>Deliveron April Webcast
</h4>
        <p>
April 14th, 2010 at 11:00am Central Time 
<br /><a href="https://www.clicktoattend.com/invitation.aspx?code=146828" target="_blank">Register
here</a></p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=c6e1208a-2116-47c6-ae58-6a158d757d14" />
      </body>
      <title>What&amp;rsquo;s New for Testing in Visual Studio 2010 and TFS 2010 Presentations</title>
      <guid isPermaLink="false">http://codesmartnothard.com/PermaLink,guid,c6e1208a-2116-47c6-ae58-6a158d757d14.aspx</guid>
      <link>http://codesmartnothard.com/WhatrsquosNewForTestingInVisualStudio2010AndTFS2010Presentations.aspx</link>
      <pubDate>Mon, 22 Mar 2010 22:40:00 GMT</pubDate>
      <description>&lt;p&gt;
I’m excited to be speaking 3 times in the next month on the new testing capabilities
in Visual Studio 2010 and TFS 2010.&amp;#160; Two events are listed below.&amp;#160; The third
event is full.&amp;#160; I hope you can make one of them.
&lt;/p&gt;
&lt;p&gt;
Sign up for the &lt;a href="http://www.deliveron.com/newsletters.htm" target="_blank"&gt;Deliveron
Newsletter&lt;/a&gt; to be notified about future presentations.
&lt;/p&gt;
&lt;h4&gt;Presentation Overview
&lt;/h4&gt;
&lt;p&gt;
Visual Studio 2010 introduces Lab Management 2010 and Test Professional 2010 to remove
the silos between QA professionals and developers to establish a more cohesive development
and testing process.&amp;#160; Together these products include tools and features for
creating test plans, creating and running manual tests, automated UI testing, creating
test virtual environments, recording manual tests, and collecting diagnostic and error
data to easily include with bugs.&amp;#160; See how everyone on your development and testing
teams can take advantage of these improvements
&lt;/p&gt;
&lt;h4&gt;Omaha Team System User Group Meeting
&lt;/h4&gt;
&lt;p&gt;
March 23, 2010 at 6:00pm 
&lt;br /&gt;
Farm Credit Services of America 
&lt;br /&gt;
5015 S 118th St 
&lt;br /&gt;
Omaha, NE 68137 
&lt;br /&gt;
&lt;a href="http://www.funwith.net/Events.aspx?ID=72" target="_blank"&gt;Register here&lt;/a&gt;
&lt;/p&gt;
&lt;h4&gt;Deliveron April Webcast
&lt;/h4&gt;
&lt;p&gt;
April 14th, 2010 at 11:00am Central Time 
&lt;br /&gt;
&lt;a href="https://www.clicktoattend.com/invitation.aspx?code=146828" target="_blank"&gt;Register
here&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=c6e1208a-2116-47c6-ae58-6a158d757d14" /&gt;</description>
      <comments>http://codesmartnothard.com/CommentView,guid,c6e1208a-2116-47c6-ae58-6a158d757d14.aspx</comments>
      <category>Team Build 2010;Team Foundation Server;TFS 2010;Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://codesmartnothard.com/Trackback.aspx?guid=2fb0b2ea-0953-4c38-9af6-99038dbb37dd</trackback:ping>
      <pingback:server>http://codesmartnothard.com/pingback.aspx</pingback:server>
      <pingback:target>http://codesmartnothard.com/PermaLink,guid,2fb0b2ea-0953-4c38-9af6-99038dbb37dd.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://codesmartnothard.com/CommentView,guid,2fb0b2ea-0953-4c38-9af6-99038dbb37dd.aspx</wfw:comment>
      <wfw:commentRss>http://codesmartnothard.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2fb0b2ea-0953-4c38-9af6-99038dbb37dd</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In previous versions of Team Foundation Server there was not a way to install and
configure TFS to be run in a completely high available environment.  TFS 2008
supports the data tier running in a SQL Server Cluster.  If the TFS application
tier server crashed, there could be a “warm standby” configured to take over but required
a manual process to do this.   TFS 2010 supports running multiple Application
tier servers using Network Load Balancing (NLB).  Last year I first heard of
topology improvements in TFS 2010 in Brian Harry’s post about the <a href="http://blogs.msdn.com/bharry/archive/2009/04/30/tfs-2010-admin-operations-setup-improvements.aspx" target="_blank">Administrator,
Operations,and Setup Improvements in Team Foundation Server 2010</a>.  I think
this is an extremely important feature as companies are utilizing more features in
Team Foundation Server and expecting these services to always be available.
</p>
        <p>
In this post I am going to explain:
</p>
        <ul>
          <li>
Configuring the second TFS application tier</li>
          <li>
Enabling and configuring Network Load Balancing in Windows Server 2008 R2</li>
          <li>
Testing TFS using the NLB Application tier severs</li>
          <li>
Lessons learned 
</li>
        </ul>
        <p>
 
</p>
        <h3>Team Foundation Server 2010 Farm Network Topology Diagram
</h3>
        <p>
This is a diagram shows the topology of the TFS configuration I created to demonstrate
the NLB option.
</p>
        <p>
 
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/image_6.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/image_thumb_2.png" width="600" height="243" />
          </a>
        </p>
        <p>
 
</p>
        <p>
I set up this environment on a laptop.  I installed Windows Server 2008 R2 x64
on the laptop as the host OS to utilize Hyper-V.   I added Active Directory
Domain Services (ADDS) and DNS to this machine and configured it as the domain controller. 
I installed SQL Server 2008 R2 x64 on it also to be the data tier for the TFS installation. 
Both TFS Application Tier Servers were created as Hyper-V virtual machines with Windows
2008 R2 x64.  To make this configuration 100% redundant I would have needed to
install the reporting services on both of the TFS Servers, used a SharePoint 2007
Farm for the portal, and a SQL Server cluster for the data tier.  In fact, now
that I have all of this working, I am going to uninstall everything and try to get
WSS and SSRS installed on both application tiers also utilizing the NLB.  This
would allow for 100% redundant and high availability for all of the TFS 2010 Components
with only 4 servers (creating a 2 server SQL Server Cluster). I will post a follow
up on how this goes..
</p>
        <p>
 
</p>
        <h3>Team Foundation Server Installation
</h3>
        <p>
The TFS installation and configuration for the first server (TFS2010A) was done just
as if it was going to be the only server.  Here are the settings after I installed
the first server.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_apptiersettings_2.jpg">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oneserver_apptiersettings" border="0" alt="oneserver_apptiersettings" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_apptiersettings_thumb.jpg" width="454" height="182" />
          </a>
        </p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_datatiersettings_2.jpg">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oneserver_datatiersettings" border="0" alt="oneserver_datatiersettings" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_datatiersettings_thumb.jpg" width="454" height="109" />
          </a>
        </p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_reportingserversettings_2.jpg">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oneserver_reportingserversettings" border="0" alt="oneserver_reportingserversettings" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_reportingserversettings_thumb.jpg" width="454" height="79" />
          </a>
        </p>
        <p>
 
</p>
        <p>
For the second server (TFS2010B), the only pre-requisites that were required were
IIS 7 and SQL Client connectivity tools.    Below are the steps for
configuring the second TFS Server.
</p>
        <p>
In the TFS configuration, choose the “Application-Tier Only” installation option. 
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly_2.jpg">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly" border="0" alt="configure_apptieronly" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly_thumb.jpg" width="454" height="342" />
          </a>
        </p>
        <p>
The first step was the Welcome step.  There were no options on this step. 
The next step is to specify the configuration database that was created when the first
server was configured.  
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly3_2.jpg">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly3" border="0" alt="configure_apptieronly3" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly3_thumb.jpg" width="454" height="342" />
          </a>
        </p>
        <p>
Next, specify the service account for the the new application tier.  I chose
to use the same domain account that I used for the first server.
</p>
        <p>
 <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly4_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly4" border="0" alt="configure_apptieronly4" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly4_thumb.jpg" width="454" height="342" /></a></p>
        <p>
This screen shows the summary of the settings that were chosen before the verification
is run.
</p>
        <p>
 <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly5_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly5" border="0" alt="configure_apptieronly5" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly5_thumb.jpg" width="454" height="342" /></a></p>
        <p>
After the first time I ran the verification I received two errors.  One was that
.Net 3.5sp1 wasn’t installed.  I’m not sure why I reported this error. 
When I checked it, it was installed.  It could be related to other error. 
The other error, TF255040, was that I didn’t have Reporting Services or SQL Server
Connectivity tools installed.
</p>
        <p>
 <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly6_error_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly6_error" border="0" alt="configure_apptieronly6_error" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly6_error_thumb.jpg" width="454" height="342" /></a></p>
        <p>
I installed the connectivity tools and reran the verification process and it passed
this time.
</p>
        <p>
 <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly7_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly7" border="0" alt="configure_apptieronly7" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly7_thumb.jpg" width="454" height="342" /></a></p>
        <p>
The configuration completed successfully.
</p>
        <p>
 <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly9_2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly9" border="0" alt="configure_apptieronly9" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly9_thumb.jpg" width="454" height="342" /></a></p>
        <p>
The TFS administrative console now shows both application tier servers.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly10_2.jpg">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly10" border="0" alt="configure_apptieronly10" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly10_thumb.jpg" width="454" height="278" />
          </a> 
</p>
        <p>
 
</p>
        <h3>Setting up Network Load Balancing in Windows 2008 R2 and Hyper-V
</h3>
        <p>
Now that both servers are installed and configured correctly, the next step is to
set up Network Load Balancing (NLB).  This will allows users to connect to TFS
through a single endpoint and allow NLB to balance the traffic and route all of the
traffic to one server if the other is unavailable.  This provides high availability
in the event of an outage or when the servers need to be updated.
</p>
        <p>
The first thing to do before setting up NLB is to pick a static IP address and create
a DNS (A) Record for the shared name.  In this example, TFS2010 is the endpoint
that clients such as Visual Studio 2010.  Here is a snapshot of the A records.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb5_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="configure_nlb5" border="0" alt="configure_nlb5" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb5_thumb.jpg" width="454" height="85" />
          </a>
        </p>
        <p>
 
</p>
        <p>
Here is an article I used to help enable and configure NLB in Windows Server 2008
R2.  Below are the steps I performed to configure it. 
<br /><a title="http://technet.microsoft.com/en-us/library/cc731695.aspx" href="http://technet.microsoft.com/en-us/library/cc731695.aspx">http://technet.microsoft.com/en-us/library/cc731695.aspx</a></p>
        <p>
For each TFS Application Tier server, install Network Load Balancing by going to Server
Manager &gt; Features &gt; Add Features &gt; Network Load Balancing
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="configure_nlb" border="0" alt="configure_nlb" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb_thumb.jpg" width="454" height="336" />
          </a>
        </p>
        <p>
Once NLB is installed on all of the App Tiers, run the Network Load Balancing Manager
by typing <strong>nlbmgr</strong> at the command prompt.  Then connect to one
of the hosts.  I chose <strong>TFS2010a</strong> first.  Right click on
the Network Load Balance node and choose “Add New Cluster”.  Add the current
server to the node by walking through the wizard.  You should be able to leave
the defaults unless you want to limit the NLB to just port 8080. The last step of
the wizard is to assign the Cluster a shared IP Address.  This IP Address is
how all of the clients will access and see it.  Make sure this is different than
the IP addresses of the any of the nodes in the cluster.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb2_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="configure_nlb2" border="0" alt="configure_nlb2" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb2_thumb.jpg" width="454" height="353" />
          </a> 
</p>
        <p>
Next, add the other host to the cluster by right clicking on the cluster and choosing
“Add Host to Cluster”.  Enter the name of the Host to be added to the cluster.
</p>
        <p>
Here is what the Cluster looks like when it is configured.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/nlb_configured_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="nlb_configured" border="0" alt="nlb_configured" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/nlb_configured_thumb.jpg" width="504" height="114" />
          </a>
        </p>
        <p>
 
</p>
        <h3>Connect to TFS from Visual Studio 2010
</h3>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/connect_tfs_nlb_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="connect_tfs_nlb" border="0" alt="connect_tfs_nlb" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/connect_tfs_nlb_thumb.jpg" width="454" height="298" />
          </a>
        </p>
        <p>
 
</p>
        <h3>Testing the high availability servers
</h3>
        <p>
To test the high availability configuration, I am going to take down one of the TFS
application tier servers and then both.  First I created the team project while
both servers were available.
</p>
        <p>
Then I created a C# windows project, checked it in, and then checked out one of the
files.
</p>
        <p>
Next, I disabled the NIC on TFS2010a.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/disabled_tfs2010a_nic_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="disabled_tfs2010a_nic" border="0" alt="disabled_tfs2010a_nic" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/disabled_tfs2010a_nic_thumb.jpg" width="304" height="209" />
          </a>
        </p>
        <p>
I did a Undo checkout on the file
</p>
        <p>
NLB rerouted the traffic to TFS2010B and it worked perfect.
</p>
        <p>
Next, I Disabled the NIC on TFS2010b so now both are disabled and it should error.
</p>
        <p>
Tried to check out a file and got a TFS not available error as expected.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/both_tfs_servers_nic_disabled_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="both_tfs_servers_nic_disabled" border="0" alt="both_tfs_servers_nic_disabled" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/both_tfs_servers_nic_disabled_thumb.jpg" width="454" height="236" />
          </a> 
</p>
        <p>
Last, I re-enabled the NIC on TFS2010A
</p>
        <p>
I performed the check out again and worked perfect.
</p>
        <p>
The NLB worked as expected.
</p>
        <p>
 
</p>
        <h3>Lessons Learned
</h3>
        <p>
I’m a developer.  I started my IT career as a server and desktop administrator
but that was a long time ago.  So setting up a domain to test this scenario was
fun but I ran into a few unexpected problems.   Here are a couple things
that slowed me down.
</p>
        <ul>
          <li>
Installed DHCP and DNS with dynamic IP.  Make sure you assign a static IP address
to the virtual internal network card on the DC.  Actually now that I have assigned
static IP addresses to both of the TFS Servers, DHCP doesn’t even need to be installed. 
</li>
          <li>
I couldn’t reach SQL Server 2008 R2 from the TFS Servers.  I got an TF255049
error in the TFS configuration.  I installed the SQL Server Management Studio
and couldn’t connect using that.  I set up aliases and toggled named pipes on
and off.  Still couldn’t connect.  Finally I stumbled upon the network protocol
configuration for SQL.  TCP and Named Pipes were disabled.   Seems
very strange but probably a security precaution.  I enabled TCP/IP and it worked
perfect. 
</li>
        </ul>
        <p>
 
</p>
        <p>
          <strong>NLB Issue</strong>
        </p>
        <p>
I ran into an issue trying to configure NLB on Windows Server 2008 R2 using Hyper-V
</p>
        <blockquote>
          <p>
“The interface is misconfigured”
</p>
          <p>
Cluster IP address (IP) not added to TCPIP properties
</p>
          <p>
Dedicated IP address (IP) not added to TCPIP properties
</p>
        </blockquote>
        <p>
Fix is to enable MAC spoofing in the settings of each VM in Hyper-V.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/enable_mac_spoofing_2.jpg">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="enable_mac_spoofing" border="0" alt="enable_mac_spoofing" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/enable_mac_spoofing_thumb.jpg" width="354" height="212" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
Enjoy!
</p>
        <p>
Mike
</p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=2fb0b2ea-0953-4c38-9af6-99038dbb37dd" />
      </body>
      <title>Setting up a Team Foundation Server 2010 Farm using NLB</title>
      <guid isPermaLink="false">http://codesmartnothard.com/PermaLink,guid,2fb0b2ea-0953-4c38-9af6-99038dbb37dd.aspx</guid>
      <link>http://codesmartnothard.com/SettingUpATeamFoundationServer2010FarmUsingNLB.aspx</link>
      <pubDate>Sun, 28 Feb 2010 02:04:00 GMT</pubDate>
      <description>&lt;p&gt;
In previous versions of Team Foundation Server there was not a way to install and
configure TFS to be run in a completely high available environment.&amp;#160; TFS 2008
supports the data tier running in a SQL Server Cluster.&amp;#160; If the TFS application
tier server crashed, there could be a “warm standby” configured to take over but required
a manual process to do this.&amp;#160;&amp;#160; TFS 2010 supports running multiple Application
tier servers using Network Load Balancing (NLB).&amp;#160; Last year I first heard of
topology improvements in TFS 2010 in Brian Harry’s post about the &lt;a href="http://blogs.msdn.com/bharry/archive/2009/04/30/tfs-2010-admin-operations-setup-improvements.aspx" target="_blank"&gt;Administrator,
Operations,and Setup Improvements in Team Foundation Server 2010&lt;/a&gt;.&amp;#160; I think
this is an extremely important feature as companies are utilizing more features in
Team Foundation Server and expecting these services to always be available.
&lt;/p&gt;
&lt;p&gt;
In this post I am going to explain:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Configuring the second TFS application tier&lt;/li&gt;
&lt;li&gt;
Enabling and configuring Network Load Balancing in Windows Server 2008 R2&lt;/li&gt;
&lt;li&gt;
Testing TFS using the NLB Application tier severs&lt;/li&gt;
&lt;li&gt;
Lessons learned 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h3&gt;Team Foundation Server 2010 Farm Network Topology Diagram
&lt;/h3&gt;
&lt;p&gt;
This is a diagram shows the topology of the TFS configuration I created to demonstrate
the NLB option.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/image_thumb_2.png" width="600" height="243" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
I set up this environment on a laptop.&amp;#160; I installed Windows Server 2008 R2 x64
on the laptop as the host OS to utilize Hyper-V.&amp;#160;&amp;#160; I added Active Directory
Domain Services (ADDS) and DNS to this machine and configured it as the domain controller.&amp;#160;
I installed SQL Server 2008 R2 x64 on it also to be the data tier for the TFS installation.&amp;#160;
Both TFS Application Tier Servers were created as Hyper-V virtual machines with Windows
2008 R2 x64.&amp;#160; To make this configuration 100% redundant I would have needed to
install the reporting services on both of the TFS Servers, used a SharePoint 2007
Farm for the portal, and a SQL Server cluster for the data tier.&amp;#160; In fact, now
that I have all of this working, I am going to uninstall everything and try to get
WSS and SSRS installed on both application tiers also utilizing the NLB.&amp;#160; This
would allow for 100% redundant and high availability for all of the TFS 2010 Components
with only 4 servers (creating a 2 server SQL Server Cluster). I will post a follow
up on how this goes..
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h3&gt;Team Foundation Server Installation
&lt;/h3&gt;
&lt;p&gt;
The TFS installation and configuration for the first server (TFS2010A) was done just
as if it was going to be the only server.&amp;#160; Here are the settings after I installed
the first server.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_apptiersettings_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oneserver_apptiersettings" border="0" alt="oneserver_apptiersettings" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_apptiersettings_thumb.jpg" width="454" height="182" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_datatiersettings_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oneserver_datatiersettings" border="0" alt="oneserver_datatiersettings" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_datatiersettings_thumb.jpg" width="454" height="109" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_reportingserversettings_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="oneserver_reportingserversettings" border="0" alt="oneserver_reportingserversettings" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/oneserver_reportingserversettings_thumb.jpg" width="454" height="79" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
For the second server (TFS2010B), the only pre-requisites that were required were
IIS 7 and SQL Client connectivity tools.&amp;#160;&amp;#160;&amp;#160; Below are the steps for
configuring the second TFS Server.
&lt;/p&gt;
&lt;p&gt;
In the TFS configuration, choose the “Application-Tier Only” installation option. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly" border="0" alt="configure_apptieronly" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly_thumb.jpg" width="454" height="342" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The first step was the Welcome step.&amp;#160; There were no options on this step.&amp;#160;
The next step is to specify the configuration database that was created when the first
server was configured.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly3_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly3" border="0" alt="configure_apptieronly3" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly3_thumb.jpg" width="454" height="342" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Next, specify the service account for the the new application tier.&amp;#160; I chose
to use the same domain account that I used for the first server.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly4_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly4" border="0" alt="configure_apptieronly4" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly4_thumb.jpg" width="454" height="342" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
This screen shows the summary of the settings that were chosen before the verification
is run.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly5_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly5" border="0" alt="configure_apptieronly5" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly5_thumb.jpg" width="454" height="342" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
After the first time I ran the verification I received two errors.&amp;#160; One was that
.Net 3.5sp1 wasn’t installed.&amp;#160; I’m not sure why I reported this error.&amp;#160;
When I checked it, it was installed.&amp;#160; It could be related to other error.&amp;#160;
The other error, TF255040, was that I didn’t have Reporting Services or SQL Server
Connectivity tools installed.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly6_error_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly6_error" border="0" alt="configure_apptieronly6_error" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly6_error_thumb.jpg" width="454" height="342" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
I installed the connectivity tools and reran the verification process and it passed
this time.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly7_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly7" border="0" alt="configure_apptieronly7" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly7_thumb.jpg" width="454" height="342" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
The configuration completed successfully.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly9_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly9" border="0" alt="configure_apptieronly9" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly9_thumb.jpg" width="454" height="342" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The TFS administrative console now shows both application tier servers.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly10_2.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="configure_apptieronly10" border="0" alt="configure_apptieronly10" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_apptieronly10_thumb.jpg" width="454" height="278" /&gt;&lt;/a&gt;&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h3&gt;Setting up Network Load Balancing in Windows 2008 R2 and Hyper-V
&lt;/h3&gt;
&lt;p&gt;
Now that both servers are installed and configured correctly, the next step is to
set up Network Load Balancing (NLB).&amp;#160; This will allows users to connect to TFS
through a single endpoint and allow NLB to balance the traffic and route all of the
traffic to one server if the other is unavailable.&amp;#160; This provides high availability
in the event of an outage or when the servers need to be updated.
&lt;/p&gt;
&lt;p&gt;
The first thing to do before setting up NLB is to pick a static IP address and create
a DNS (A) Record for the shared name.&amp;#160; In this example, TFS2010 is the endpoint
that clients such as Visual Studio 2010.&amp;#160; Here is a snapshot of the A records.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb5_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="configure_nlb5" border="0" alt="configure_nlb5" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb5_thumb.jpg" width="454" height="85" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Here is an article I used to help enable and configure NLB in Windows Server 2008
R2.&amp;#160; Below are the steps I performed to configure it. 
&lt;br /&gt;
&lt;a title="http://technet.microsoft.com/en-us/library/cc731695.aspx" href="http://technet.microsoft.com/en-us/library/cc731695.aspx"&gt;http://technet.microsoft.com/en-us/library/cc731695.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
For each TFS Application Tier server, install Network Load Balancing by going to Server
Manager &amp;gt; Features &amp;gt; Add Features &amp;gt; Network Load Balancing
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="configure_nlb" border="0" alt="configure_nlb" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb_thumb.jpg" width="454" height="336" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Once NLB is installed on all of the App Tiers, run the Network Load Balancing Manager
by typing &lt;strong&gt;nlbmgr&lt;/strong&gt; at the command prompt.&amp;#160; Then connect to one
of the hosts.&amp;#160; I chose &lt;strong&gt;TFS2010a&lt;/strong&gt; first.&amp;#160; Right click on
the Network Load Balance node and choose “Add New Cluster”.&amp;#160; Add the current
server to the node by walking through the wizard.&amp;#160; You should be able to leave
the defaults unless you want to limit the NLB to just port 8080. The last step of
the wizard is to assign the Cluster a shared IP Address.&amp;#160; This IP Address is
how all of the clients will access and see it.&amp;#160; Make sure this is different than
the IP addresses of the any of the nodes in the cluster.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb2_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="configure_nlb2" border="0" alt="configure_nlb2" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/configure_nlb2_thumb.jpg" width="454" height="353" /&gt;&lt;/a&gt;&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Next, add the other host to the cluster by right clicking on the cluster and choosing
“Add Host to Cluster”.&amp;#160; Enter the name of the Host to be added to the cluster.
&lt;/p&gt;
&lt;p&gt;
Here is what the Cluster looks like when it is configured.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/nlb_configured_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="nlb_configured" border="0" alt="nlb_configured" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/nlb_configured_thumb.jpg" width="504" height="114" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h3&gt;Connect to TFS from Visual Studio 2010
&lt;/h3&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/connect_tfs_nlb_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="connect_tfs_nlb" border="0" alt="connect_tfs_nlb" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/connect_tfs_nlb_thumb.jpg" width="454" height="298" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h3&gt;Testing the high availability servers
&lt;/h3&gt;
&lt;p&gt;
To test the high availability configuration, I am going to take down one of the TFS
application tier servers and then both.&amp;#160; First I created the team project while
both servers were available.
&lt;/p&gt;
&lt;p&gt;
Then I created a C# windows project, checked it in, and then checked out one of the
files.
&lt;/p&gt;
&lt;p&gt;
Next, I disabled the NIC on TFS2010a.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/disabled_tfs2010a_nic_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="disabled_tfs2010a_nic" border="0" alt="disabled_tfs2010a_nic" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/disabled_tfs2010a_nic_thumb.jpg" width="304" height="209" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
I did a Undo checkout on the file
&lt;/p&gt;
&lt;p&gt;
NLB rerouted the traffic to TFS2010B and it worked perfect.
&lt;/p&gt;
&lt;p&gt;
Next, I Disabled the NIC on TFS2010b so now both are disabled and it should error.
&lt;/p&gt;
&lt;p&gt;
Tried to check out a file and got a TFS not available error as expected.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/both_tfs_servers_nic_disabled_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="both_tfs_servers_nic_disabled" border="0" alt="both_tfs_servers_nic_disabled" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/both_tfs_servers_nic_disabled_thumb.jpg" width="454" height="236" /&gt;&lt;/a&gt;&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Last, I re-enabled the NIC on TFS2010A
&lt;/p&gt;
&lt;p&gt;
I performed the check out again and worked perfect.
&lt;/p&gt;
&lt;p&gt;
The NLB worked as expected.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;h3&gt;Lessons Learned
&lt;/h3&gt;
&lt;p&gt;
I’m a developer.&amp;#160; I started my IT career as a server and desktop administrator
but that was a long time ago.&amp;#160; So setting up a domain to test this scenario was
fun but I ran into a few unexpected problems.&amp;#160;&amp;#160; Here are a couple things
that slowed me down.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Installed DHCP and DNS with dynamic IP.&amp;#160; Make sure you assign a static IP address
to the virtual internal network card on the DC.&amp;#160; Actually now that I have assigned
static IP addresses to both of the TFS Servers, DHCP doesn’t even need to be installed. 
&lt;/li&gt;
&lt;li&gt;
I couldn’t reach SQL Server 2008 R2 from the TFS Servers.&amp;#160; I got an TF255049
error in the TFS configuration.&amp;#160; I installed the SQL Server Management Studio
and couldn’t connect using that.&amp;#160; I set up aliases and toggled named pipes on
and off.&amp;#160; Still couldn’t connect.&amp;#160; Finally I stumbled upon the network protocol
configuration for SQL.&amp;#160; TCP and Named Pipes were disabled.&amp;#160;&amp;#160; Seems
very strange but probably a security precaution.&amp;#160; I enabled TCP/IP and it worked
perfect. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;NLB Issue&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I ran into an issue trying to configure NLB on Windows Server 2008 R2 using Hyper-V
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
“The interface is misconfigured”
&lt;/p&gt;
&lt;p&gt;
Cluster IP address (IP) not added to TCPIP properties
&lt;/p&gt;
&lt;p&gt;
Dedicated IP address (IP) not added to TCPIP properties
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Fix is to enable MAC spoofing in the settings of each VM in Hyper-V.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/enable_mac_spoofing_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="enable_mac_spoofing" border="0" alt="enable_mac_spoofing" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/SettingupaTeamFoundationServer2010Farmwi_EB10/enable_mac_spoofing_thumb.jpg" width="354" height="212" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Enjoy!
&lt;/p&gt;
&lt;p&gt;
Mike
&lt;/p&gt;
&lt;img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=2fb0b2ea-0953-4c38-9af6-99038dbb37dd" /&gt;</description>
      <comments>http://codesmartnothard.com/CommentView,guid,2fb0b2ea-0953-4c38-9af6-99038dbb37dd.aspx</comments>
      <category>SQL Server 2008;Team Foundation Server;TFS 2010;Visual Studio 2010</category>
    </item>
    <item>
      <trackback:ping>http://codesmartnothard.com/Trackback.aspx?guid=be3fbe67-01ea-4f75-8a0a-ad14d9ddd302</trackback:ping>
      <pingback:server>http://codesmartnothard.com/pingback.aspx</pingback:server>
      <pingback:target>http://codesmartnothard.com/PermaLink,guid,be3fbe67-01ea-4f75-8a0a-ad14d9ddd302.aspx</pingback:target>
      <dc:creator>Your DisplayName here!</dc:creator>
      <wfw:comment>http://codesmartnothard.com/CommentView,guid,be3fbe67-01ea-4f75-8a0a-ad14d9ddd302.aspx</wfw:comment>
      <wfw:commentRss>http://codesmartnothard.com/SyndicationService.asmx/GetEntryCommentsRss?guid=be3fbe67-01ea-4f75-8a0a-ad14d9ddd302</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
To me there has always been a feeling a of excitement to be able to build an application
and then deliver it to someone that wants it. When I first started programming over
20 years ago with GW-BASIC on my Tandy 1000 EX, it was limiting that what I built
could only be run within GW-BASIC since it was an interpreted language environment
and not compiled. When I bought Quick Basic 4.5, I could finally compile my applications
into an EXE and run them outside of the interpreter. Then I felt like I hit the big
time when I was able to build my first setup package in Visual Basic 4. I remember
I built a Hello World caliber application and created a setup package that took 3
or 4 floppy disks. I didn’t think it could get any better than this :) Over the years
the the excitement about delivering applications became more from the what was built
and not how it would be delivered. Visual Studio has always included functional, no
frills setup projects. 3rd Party vendors have created easier to use and more power
tools for creating deployment projects such as InstallShield. Developers who didn’t
purchase a 3rd Party tool were limited to using the OOB (out of the box) setup projects
within Visual Studio. While this is functional, the developer has to know where and
how to do things and the usability is not very intuitive. It requires many steps to
creating a MSI that I have blogged about in <a href="http://codesmartnothard.com/DeploymentsWithTFSPart2HowToCreateAnAutomatedDeploymentMSI.aspx" target="_blank">Deployments
with TFS Part 2: How to create an automated deployment MSI</a>. In Visual Studio 2010
there is finally an easy to solution without purchasing an additional production.
</p>
        <p>
Last week I saw this post from Somasegar on <a href="http://blogs.msdn.com/somasegar/archive/2009/12/14/building-setup-and-deployment-packages-in-vs-2010.aspx" target="_blank">Building
setup and deployment packages in VS 2010</a>. Microsoft has partnered with Flexera,
makers of InstallShield to create InstallShield Limited Edition for Visual Studio
2010. This brings the InstallShield graphical interface to Visual Studio. In addition
to providing a highly intuitive interface for building setup packages, this product
allows setup packages to be built from with TFS Team Builds. This has been a major
pain point for automated deployments and SCM (Software Configuration Management) processes.
I downloaded and installed InstallShield 2010 LE and here is a walkthrough of the
tool.
</p>
        <h3>Download and Installation
</h3>
        <p>
Read Somasegar’s blog post on how to download and install it. (see link above)
</p>
        <p>
        </p>
        <h3>InstallShield 2010 LE Setup project
</h3>
        <p>
Once it is installed and you create a InstallShield Setup project, the Project Assignment
view is the default view. As you can see, the graphic is a guide that explains the
parts of the MSI and the steps to create the package. At the bottom of the screen
are the steps to the installation project. In addition to the steps at the bottom
of the guide, there are also intuitive steps to the right that keep all of the package
settings cleanly organized. 
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_2.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb.png" width="804" height="479" />
          </a>
        </p>
        <p>
This first step is to fill out the basic information about the application that is
going to be deployed.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_6.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_2.png" width="804" height="481" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
In the second step, required operating systems and prerequisite applications can be
specified and enforced when installing the application. Custom prerequisites can be
defined by choosing “Create a custom software condition” under “More Options”.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_10.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_4.png" width="804" height="481" />
          </a>
        </p>
        <p>
The installation Architecture section step is disabled in the Limited Edition. In
the other editions different features can be defined for users to choose what sections
they want installed.
</p>
        <p>
        </p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_12.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_5.png" width="804" height="481" />
          </a>
        </p>
        <p>
The next step is the Application Files. Here the application’s files can be added
to the installation. The “Add Project Outputs” is the primary button for adding the
application files. I found this dialog window to be a lot easier to use than the Visual
Studio setup project.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_14.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_6.png" width="804" height="481" />
          </a>
        </p>
        <p>
        </p>
        <p>
The Application Shortcuts step is where desktop and start menu shortcuts can be defined. 
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_18.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_8.png" width="804" height="481" />
          </a>
        </p>
        <p>
If the application requires any registry entries, they can be defined in the Application
Registry step.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_20.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_9.png" width="804" height="481" />
          </a>
        </p>
        <p>
The last step is the Installation Interview. This step asks a series of questions
that drive what dialogs the user running the installation will see. Custom dialogs
are not supported in the InstallShield Limited Edition. Custom dialogs are supported
in the Visual Studio setup projects. For the automated deployment MSIs, I create a
dialog that allows the user to specify the environment.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_22.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_10.png" width="804" height="481" />
          </a>
        </p>
        <p>
        </p>
        <p>
        </p>
        <p>
Custom Actions are non-standard activities that can be performed at different points
of the installation process. The Limited Edition supports VBScript, JScript, and Exe
custom actions. However, as shown in the following image, there are only a couple
points in the process where custom actions can be defined. The Premier and Professional
editions also support InstallScript, a powerful scripting tool to create more advanced
customizations to the installation process.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_26.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_12.png" width="804" height="481" />
          </a>
        </p>
        <p>
After I built the MSI, I ran package to install it. Users will see this message box
that the installation was created with a beta version of InstallShield. 
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_23.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_1.png" width="404" height="152" />
          </a>
        </p>
        <h3>InstallShield 2010 LE for Visual Studio 2008
</h3>
        <p>
The InstallShield 2010 LE Installation also installs a version that works within Visual
Studio 2008. This interface looks the same in Visual Studio 2008 as it does in Visual
Studio 2010.
</p>
        <p>
          <a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_15.png">
            <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_3.png" width="640" height="484" />
          </a>
        </p>
        <h3>
        </h3>
        <h3>Building MSIs with Team Build 2010
</h3>
        <p>
This is the feature I am most looking forward to in InstallShield 2010 LE. Standard
Visual Studio 2008 setup projects can not be built within Team Build without some
tricks. Unfortunately TFS Source Control and Team Build integration is not available
in this beta version. I verified this with Flexera. They are currently working on
it. As soon as an updated version is available with this enabled I will do a follow
up post detailing the TFS Source Control and Team Build experience. I’m interested
to see the following in action:
</p>
        <ul>
          <li>
Triggering a build and having the MSI compile with the updated assemblies.</li>
          <li>
Curious to see if the InstallShield Setup project build can detect new dependencies
added. My tests will include adding a reference to the primary output application.
Then do a new build to see if the MSI will automatically include it. It might be expecting
too much but this would be very beneficial.</li>
        </ul>
        <p>
        </p>
        <p>
        </p>
        <h3>Overall
</h3>
        <ul>
          <li>
The Project Assistant is a very simple to use series of steps to create a complete
setup project. As users feel more comfortable with the too, they will probably jump
to the specific screens they are looking for in the navigation pane on the right.
Both are highly intuitive and significant improvements over the the standard Visual
Studio setup projects. 
</li>
          <li>
Most things that are supported in the standard Visual Studio setup project can be
accomplished with InstallShield 2010 Limited Edition. For most installation packages,
these limitations will not be problem. However, I will not be able to create automated
deployment MSIs because of the limitations of no custom dialogs and not being able
to create custom properties. 
</li>
          <li>
Being able to rebuild the MSIs during each Team Build is a huge benefit. Once this
feature is available, I think it will become my favorite feature. 
</li>
          <li>
I believe Microsoft and Flexera will both win with this product. Microsoft’s Visual
Studio 2010 will include an improved tool for creating installation packages without
having to reinvent the wheel. Flexera has built an amazing and easy to use product
that will work for the majority of scenarios, but many will want to upgrade to the
Express, Professional, or Premier editions to get the full power of InstallShield.</li>
          <li>
The final product should be great, but this beta version is not ready to be used for
more than evaluation purposes. Between the beta message box that is displayed when
the user installs it and the fact that the TFS Source Control and Team Build integration
features are not available yet, I recommend waiting until the final version is released. 
</li>
        </ul>
        <p>
Mike
</p>
        <p>
        </p>
        <p>
          <a href="http://www.deliveron.com" target="_blank">
            <img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" src="http://www.codesmartnothard.com/images/deliveron_banner.gif" />
          </a>
        </p>
        <img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=be3fbe67-01ea-4f75-8a0a-ad14d9ddd302" />
      </body>
      <title>InstallShield Limited Edition for Visual Studio 2010 Walkthrough</title>
      <guid isPermaLink="false">http://codesmartnothard.com/PermaLink,guid,be3fbe67-01ea-4f75-8a0a-ad14d9ddd302.aspx</guid>
      <link>http://codesmartnothard.com/InstallShieldLimitedEditionForVisualStudio2010Walkthrough.aspx</link>
      <pubDate>Tue, 05 Jan 2010 06:28:00 GMT</pubDate>
      <description>&lt;p&gt;
To me there has always been a feeling a of excitement to be able to build an application
and then deliver it to someone that wants it. When I first started programming over
20 years ago with GW-BASIC on my Tandy 1000 EX, it was limiting that what I built
could only be run within GW-BASIC since it was an interpreted language environment
and not compiled. When I bought Quick Basic 4.5, I could finally compile my applications
into an EXE and run them outside of the interpreter. Then I felt like I hit the big
time when I was able to build my first setup package in Visual Basic 4. I remember
I built a Hello World caliber application and created a setup package that took 3
or 4 floppy disks. I didn’t think it could get any better than this :) Over the years
the the excitement about delivering applications became more from the what was built
and not how it would be delivered. Visual Studio has always included functional, no
frills setup projects. 3rd Party vendors have created easier to use and more power
tools for creating deployment projects such as InstallShield. Developers who didn’t
purchase a 3rd Party tool were limited to using the OOB (out of the box) setup projects
within Visual Studio. While this is functional, the developer has to know where and
how to do things and the usability is not very intuitive. It requires many steps to
creating a MSI that I have blogged about in &lt;a href="http://codesmartnothard.com/DeploymentsWithTFSPart2HowToCreateAnAutomatedDeploymentMSI.aspx" target="_blank"&gt;Deployments
with TFS Part 2: How to create an automated deployment MSI&lt;/a&gt;. In Visual Studio 2010
there is finally an easy to solution without purchasing an additional production.
&lt;/p&gt;
&lt;p&gt;
Last week I saw this post from Somasegar on &lt;a href="http://blogs.msdn.com/somasegar/archive/2009/12/14/building-setup-and-deployment-packages-in-vs-2010.aspx" target="_blank"&gt;Building
setup and deployment packages in VS 2010&lt;/a&gt;. Microsoft has partnered with Flexera,
makers of InstallShield to create InstallShield Limited Edition for Visual Studio
2010. This brings the InstallShield graphical interface to Visual Studio. In addition
to providing a highly intuitive interface for building setup packages, this product
allows setup packages to be built from with TFS Team Builds. This has been a major
pain point for automated deployments and SCM (Software Configuration Management) processes.
I downloaded and installed InstallShield 2010 LE and here is a walkthrough of the
tool.
&lt;/p&gt;
&lt;h3&gt;Download and Installation
&lt;/h3&gt;
&lt;p&gt;
Read Somasegar’s blog post on how to download and install it. (see link above)
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3&gt;InstallShield 2010 LE Setup project
&lt;/h3&gt;
&lt;p&gt;
Once it is installed and you create a InstallShield Setup project, the Project Assignment
view is the default view. As you can see, the graphic is a guide that explains the
parts of the MSI and the steps to create the package. At the bottom of the screen
are the steps to the installation project. In addition to the steps at the bottom
of the guide, there are also intuitive steps to the right that keep all of the package
settings cleanly organized. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb.png" width="804" height="479" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
This first step is to fill out the basic information about the application that is
going to be deployed.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_2.png" width="804" height="481" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
In the second step, required operating systems and prerequisite applications can be
specified and enforced when installing the application. Custom prerequisites can be
defined by choosing “Create a custom software condition” under “More Options”.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_4.png" width="804" height="481" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The installation Architecture section step is disabled in the Limited Edition. In
the other editions different features can be defined for users to choose what sections
they want installed.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_5.png" width="804" height="481" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The next step is the Application Files. Here the application’s files can be added
to the installation. The “Add Project Outputs” is the primary button for adding the
application files. I found this dialog window to be a lot easier to use than the Visual
Studio setup project.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_6.png" width="804" height="481" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
The Application Shortcuts step is where desktop and start menu shortcuts can be defined. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_18.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_8.png" width="804" height="481" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
If the application requires any registry entries, they can be defined in the Application
Registry step.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_20.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_9.png" width="804" height="481" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
The last step is the Installation Interview. This step asks a series of questions
that drive what dialogs the user running the installation will see. Custom dialogs
are not supported in the InstallShield Limited Edition. Custom dialogs are supported
in the Visual Studio setup projects. For the automated deployment MSIs, I create a
dialog that allows the user to specify the environment.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_22.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_10.png" width="804" height="481" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Custom Actions are non-standard activities that can be performed at different points
of the installation process. The Limited Edition supports VBScript, JScript, and Exe
custom actions. However, as shown in the following image, there are only a couple
points in the process where custom actions can be defined. The Premier and Professional
editions also support InstallScript, a powerful scripting tool to create more advanced
customizations to the installation process.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_26.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_12.png" width="804" height="481" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
After I built the MSI, I ran package to install it. Users will see this message box
that the installation was created with a beta version of InstallShield. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_23.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_1.png" width="404" height="152" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h3&gt;InstallShield 2010 LE for Visual Studio 2008
&lt;/h3&gt;
&lt;p&gt;
The InstallShield 2010 LE Installation also installs a version that works within Visual
Studio 2008. This interface looks the same in Visual Studio 2008 as it does in Visual
Studio 2010.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_15.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://codesmartnothard.com/content/binary/WindowsLiveWriter/InstallShieldLimitedEditionforVisualStud_B816/image_thumb_3.png" width="640" height="484" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;Building MSIs with Team Build 2010
&lt;/h3&gt;
&lt;p&gt;
This is the feature I am most looking forward to in InstallShield 2010 LE. Standard
Visual Studio 2008 setup projects can not be built within Team Build without some
tricks. Unfortunately TFS Source Control and Team Build integration is not available
in this beta version. I verified this with Flexera. They are currently working on
it. As soon as an updated version is available with this enabled I will do a follow
up post detailing the TFS Source Control and Team Build experience. I’m interested
to see the following in action:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Triggering a build and having the MSI compile with the updated assemblies.&lt;/li&gt;
&lt;li&gt;
Curious to see if the InstallShield Setup project build can detect new dependencies
added. My tests will include adding a reference to the primary output application.
Then do a new build to see if the MSI will automatically include it. It might be expecting
too much but this would be very beneficial.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3&gt;Overall
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
The Project Assistant is a very simple to use series of steps to create a complete
setup project. As users feel more comfortable with the too, they will probably jump
to the specific screens they are looking for in the navigation pane on the right.
Both are highly intuitive and significant improvements over the the standard Visual
Studio setup projects. 
&lt;/li&gt;
&lt;li&gt;
Most things that are supported in the standard Visual Studio setup project can be
accomplished with InstallShield 2010 Limited Edition. For most installation packages,
these limitations will not be problem. However, I will not be able to create automated
deployment MSIs because of the limitations of no custom dialogs and not being able
to create custom properties. 
&lt;/li&gt;
&lt;li&gt;
Being able to rebuild the MSIs during each Team Build is a huge benefit. Once this
feature is available, I think it will become my favorite feature. 
&lt;/li&gt;
&lt;li&gt;
I believe Microsoft and Flexera will both win with this product. Microsoft’s Visual
Studio 2010 will include an improved tool for creating installation packages without
having to reinvent the wheel. Flexera has built an amazing and easy to use product
that will work for the majority of scenarios, but many will want to upgrade to the
Express, Professional, or Premier editions to get the full power of InstallShield.&lt;/li&gt;
&lt;li&gt;
The final product should be great, but this beta version is not ready to be used for
more than evaluation purposes. Between the beta message box that is displayed when
the user installs it and the fact that the TFS Source Control and Team Build integration
features are not available yet, I recommend waiting until the final version is released. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Mike
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.deliveron.com" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" src="http://www.codesmartnothard.com/images/deliveron_banner.gif" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://codesmartnothard.com/aggbug.ashx?id=be3fbe67-01ea-4f75-8a0a-ad14d9ddd302" /&gt;</description>
      <comments>http://codesmartnothard.com/CommentView,guid,be3fbe67-01ea-4f75-8a0a-ad14d9ddd302.aspx</comments>
      <category>Team Build 2010;Team Foundation Server;TFS 2010;Visual Studio 2008;Visual Studio 2010</category>
    </item>
  </channel>
</rss>