I'll do you one better. Send me an email and I'll talk with you about it on the phone.
---------------------------------------- From: "Castro, Edwin G. (Hillsboro)" <edwin.cas...@fiserv.com> Sent: Saturday, September 24, 2011 2:03 PM To: "General discussion for Windows Installer XML toolset." <wix-users@lists.sourceforge.net> Subject: Re: [WiX-users] Best way to invoke Wix from a TFS build workflow? Can somebody send me some links that explain, describe, or document what a "Workflow based build" is? This completely new to me and I have to wonder how you build a regular C# project using a "Workflow based build"... Edwin G. Castro Software Developer - Staff Digital Channels Fiserv Office: 503-746-0643 Fax: 503-617-0291 www.fiserv.com ??Please consider the environment before printing this e-mail > -----Original Message----- > From: John Bergman [mailto:john.berg...@xpedienttechnologies.com] > Sent: Friday, September 23, 2011 10:11 PM > To: John Robbins; General discussion for Windows Installer XML toolset. > Subject: Re: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > John, > > I got that, but how would you invoke the build task from a Workflow based > build, rather than a MSBuild-based build? > > You're right, Austin is pretty close. WE have a pretty big .Net community > in > our area too, not sure why we seem to always get bypassed for anything > substantial. > > John > > -----Original Message----- > From: John Robbins [mailto:j...@wintellect.com] > Sent: Saturday, September 24, 2011 12:05 AM > To: John Bergman; General discussion for Windows Installer XML toolset. > Subject: RE: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > Hi John, > > Sorry for the misunderstanding. What my MSBuild files do is pull in > Microsoft.TeamFoundation.Build.ProcessComponents.dll, which has a bunch > of MSBuild tasks in it. The key task is GetBuildProperties where you can have > it set a few properties through OutProperty elements. Here's the relevant > code: > > <!-- Pull in the VS 2010 version of the TFS build components only if doing a > full > TFS Build.--> > <UsingTask > TaskName="Microsoft.TeamFoundation.Build.Tasks.GetBuildProperties" > > AssemblyFile="$(TeamBuildRefPath)\Microsoft.TeamFoundation.Build.Proce > ssComponents.dll" > Condition="'$(WintellectBuildType)'=='TFSBUILD'"/> > > <!-- The one target needed from TFS Build to pull out the build information. > --> > <Target Name="WintellectInitializeBuildProperties" > Condition="'$(WintellectBuildType)'=='TFSBUILD'"> > > <GetBuildProperties > TeamFoundationServerUrl="$(TeamFoundationServerUrl)" > BuildUri="$(BuildUri)" > Condition=" '$(IsDesktopBuild)' != 'true' "> > <!-- I only need these two values so that's all I'll ask about. --> > <Output TaskParameter="BuildDefinitionName" > PropertyName="BuildDefinitionName" /> > <Output TaskParameter="BuildNumber" PropertyName="BuildNumber" > /> > </GetBuildProperties> > <Message Importance="high" Text="Hello : BuildUri=$(BuildUri)"/> > > </Target> > > You can see all of this in action with the Wintellect.TFSBuildNumber.targets > file in the samples I mentioned below. > > Dallas isn't that far away from Austin. Anyway, you needed to get out of the > office for a few days anyway. :D > > Hope it helps! > > John > Wintellect > http://www.wintellect.com > +1-877-968-5528 > > > -----Original Message----- > From: John Bergman [mailto:john.berg...@xpedienttechnologies.com] > Sent: Friday, September 23, 2011 9:58 PM > To: John Robbins; General discussion for Windows Installer XML toolset. > Subject: RE: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > No, what I was asking was how do you get the build number out of the TFS > build server into the files? > > You guys need to bring Devscovery to Dallas/Ft. Worth... > > -----Original Message----- > From: John Robbins [mailto:j...@wintellect.com] > Sent: Friday, September 23, 2011 4:46 PM > To: General discussion for Windows Installer XML toolset.; John Bergman > Subject: RE: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > Hi John (Bergman :) ) > > As I mentioned all my build number stuff is part of your normal C#/VB/C++ > .CS/VB/VCXPROJ files. Once you've edited your project files to create the > version numbers targets (see the example I included), you'll just tell TFS > Build > to build your solution and the build numbers are automatically created. > > Is that what you were asking? > > John > Wintellect > http://www.wintellect.com > +1-877-968-5528 > > > -----Original Message----- > From: John Bergman [mailto:john.berg...@xpedienttechnologies.com] > Sent: Friday, September 23, 2011 10:16 AM > To: General discussion for Windows Installer XML toolset.; > chr...@deploymentengineering.com > Subject: Re: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > John (Robbins), > > Hey John, I don't see how the MSBuild items get invoked from a TFS > Workflow-based build based on the information in your blog; How do you > connect the two together? > > For others... John's blog has a link to Jim Lamb's article about how to > create > a custom WorkFlow activity > (http://blogs.msdn.com/b/jimlamb/archive/2010/02/12/how-to-create-a- > custom-workflow-activity-for-tfs-build-2010.aspx). > > John > > -----Original Message----- > From: John Robbins [mailto:j...@wintellect.com] > Sent: Thursday, September 22, 2011 9:01 PM > To: General discussion for Windows Installer XML toolset.; > chr...@deploymentengineering.com > Subject: Re: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > Hi, > > Just to throw out an alternative way of getting the TFS build number into you > version data here's how I did it: > > http://www.wintellect.com/cs/blogs/jrobbins/archive/2009/11/09/tfs-2010- > build-number-and-assembly-file-versions-completely-in-sync-with-only- > msbuild-4-0.aspx > http://www.wintellect.com/CS/blogs/jrobbins/archive/2011/09/05/tfs-2010- > build-numbers-file-versions-from-inside-your-c-and-c-projects.aspx > http://www.wintellect.com/CS/blogs/jrobbins/archive/2011/09/11/more- > on-tfs-2010-build-numbers-inside-your-projects.aspx > > John Bergman's way is excellent but mine goes right into the project file so > it > doesn't require a custom TFS Build action in the workflow. > > John > Wintellect > http://www.wintellect.com > +1-877-968-5528 > > > -----Original Message----- > From: John Bergman [mailto:john.berg...@xpedienttechnologies.com] > Sent: Thursday, September 22, 2011 5:34 PM > To: General discussion for Windows Installer XML toolset.; > chr...@deploymentengineering.com > Subject: Re: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > I created a custom Activity that created a Wix Include file. I had it just > write > the file new each time. The contents of our file looks like this > > <?xml version="1.0" encoding="utf-8"?> > <!-- Note that this file will be overridden by the build server. --> <Include> > <?define MajorVersion = "1" ?> > <?define MinorVersion = "62" ?> > <?define BuildNumber = "112" ?> > <?define Revision = "1083" ?> > <?define FullVersion = "1.62.112.1083" ?> > <!--WiX Installer Versions are Major.Minor.Revision --> </Include> > > Then I just included it in all the wix markup to use it. Its pretty straight > forward. I probably wrote more to the file than I needed, but I didn't want > to > have to revisit getting the custom activity to work. > > Once you create the activity, you need to update your build agents to pull > the assembly from source control, I placed it into > $/root/BuildProcessTemplates/CustomActivities. > > Using the code activity, you can update the build process template to hook > up the two properties (VersionInfoFileName and VersionNumber). I actually > use the same technique to write an assemblyinfo file that has the version > information in it as well. In my case, I don't check it in and out each time, > because the build regenerates it... you could easily do that by adding a > invokeprocess activity before/after the UpdateWixVersion activity > (remember to use the **NO_CI** Magic so you don't get caught in a > continuous loop building... > > The source for the code activity looks like this: > > [BuildActivity(HostEnvironmentOption.All)] > public sealed class UpdateWixVersion : CodeActivity > { > /// <summary> > /// Defines the file mask of all of the files for which the build number > of the > assembly version must be updated > /// </summary> > [RequiredArgument] > public InArgument<string> VersionInfoFileName { get; set; } > > /// <summary> > /// Defines (uses) the VersionNumber as initialized in the build process > template. > /// </summary> > [RequiredArgument] > public InArgument<string> VersionNumber { get; set; } > > /// <summary> > /// Execute the Update Version Number build step. > /// </summary> > /// <param name="context">Contains the workflow context</param> > protected override void Execute(CodeActivityContext context) > { > //-- Get the input parameters > string strVersionInfoFileName = > context.GetValue(this.VersionInfoFileName); > string strVersionNumber = context.GetValue(this.VersionNumber); > > Version verCurrentVersionInfo = new Version(strVersionNumber); > > //-- Generate the text... > StringBuilder sb = new StringBuilder(); > sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); > sb.AppendLine("<!-- Note that this file will be overridden by the build > server. -->"); > sb.AppendLine("<Include>"); > sb.AppendLine(string.Format(" <?define MajorVersion = \"{0}\" > ?>", > verCurrentVersionInfo.Major)); > sb.AppendLine(string.Format(" <?define MinorVersion = \"{0}\" > ?>", > verCurrentVersionInfo.Minor)); > sb.AppendLine(string.Format(" <?define BuildNumber = \"{0}\" > ?>", > verCurrentVersionInfo.Build)); > sb.AppendLine(string.Format(" <?define Revision = \"{0}\" > ?>", > verCurrentVersionInfo.Revision)); > sb.AppendLine(string.Format(" <?define FullVersion = \"{0}\" > ?>", > strVersionNumber)); > sb.AppendLine(" <!--WiX Installer Versions are Major.Minor.Revision -- > >"); > > sb.AppendLine("</Include>"); > > //-- Save the file text... > if (File.Exists(strVersionInfoFileName)) > { //-- ensure that the file is writeable > FileAttributes fileAttributes = > File.GetAttributes(strVersionInfoFileName); > File.SetAttributes(strVersionInfoFileName, fileAttributes & > ~FileAttributes.ReadOnly); > > File.WriteAllText(strVersionInfoFileName, sb.ToString()); > > //-- restore the file's original attributes > File.SetAttributes(strVersionInfoFileName, fileAttributes); > } > else > { > throw new Exception(string.Format("UpdateWixVersion: {0} does not > exist.", VersionInfoFileName)); > } > } > } > > Hope it helps, > John > > -----Original Message----- > From: David Rickard (USA) [mailto:davri...@microsoft.com] > Sent: Thursday, September 22, 2011 4:54 PM > To: chr...@deploymentengineering.com; General discussion for Windows > Installer XML toolset. > Subject: Re: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > Again, thanks for all the tips. > > I'm setting my .wixproj project up now and have gotten to the point where I > need to pass the version number from the TFS build in. You said it "takes a > little bit more work": how did you end up doing that? > > -----Original Message----- > From: Christopher Painter [mailto:chr...@deploymentengineering.com] > Sent: Tuesday, September 20, 2011 4:09 PM > To: General discussion for Windows Installer XML toolset.; wix- > us...@lists.sourceforge.net > Subject: Re: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > > > > The simplest way is to use Votive to generate a .SLN / .WIXPROJ and then > add the sln configuration | platform to to the build parameters in the build > definition. You shouldn't have to do any customizations in workflow > as the Default Template will work out of the box. Passing a > ProductVersion property takes a little bit more work on the msbuild side ( > build parameters and preprocessor definitions in the wixproj and wixs ) but it > doesn't require any workflow changes. > > ---------------------------------------- > > From: "David Rickard (USA)" <davri...@microsoft.com> > > Sent: Tuesday, September 20, 2011 5:11 PM > > To: "wix-users@lists.sourceforge.net" <wix-users@lists.sourceforge.net> > > Subject: [WiX-users] Best way to invoke Wix from a TFS build workflow? > > > I need to build some MSIs with Wix during our TFS build. Our current TFS > build is using the Windows Workflow XAML files to declare the build logic. > What's the best way to invoke Wix from there? Directly invoking the process > from an activity? Going down to a powershell script and calling it from there? > Are there any custom Wix activities to use? > > ---------------------------------------------------------------------------- > -- > > All the data continuously generated in your IT infrastructure contains a > > definitive record of customers, application performance, security > > threats, fraudulent activity and more. Splunk takes this data and makes > > sense of it. Business sense. IT sense. Common sense. > > http://p.sf.net/sfu/splunk-d2dcopy1 > > _______________________________________________ > > WiX-users mailing list > > WiX-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wix-users > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security threats, > fraudulent activity and more. Splunk takes this data and makes sense of it. > Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security threats, > fraudulent activity and more. Splunk takes this data and makes sense of it. > Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > ------------------------------------------------------------------------------ > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-d2dcopy2 > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > ------------------------------------------------------------------------------ > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-d2dcopy2 > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > ------------------------------------------------------------------------------ > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-d2dcopy2 > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > > > ------------------------------------------------------------------------------ > All of the data generated in your IT infrastructure is seriously valuable. > Why? It contains a definitive record of application performance, security > threats, fraudulent activity, and more. Splunk takes this data and makes > sense of it. IT sense. And common sense. > http://p.sf.net/sfu/splunk-d2dcopy2 > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2dcopy2 _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2dcopy2 _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users