[MVP?] Daily Build

E

Ed S

I've scoured the newsgroups, search engines, and various
forums to no avail.

Considering that a "Daily Build and Smoke Test" is
a "Microsoft recommended" software integration approach,
what is the "Best Practice" for implementing this type of
process with InfoPath?

The documentation from various ISVs seems sufficient to
get an automated cab build going with NAnt (which is the
basis for the .xsn file). But which files are
encompassed in the "code-behind" .dll, and what's their
build order?

As for the versioning, schema, and manifest updates, it
looks doable, but it's rather disappointing how much
documentation is available in the SDK.

Any tips/walkthroughs/recommendations?

Thanks in advance,
+Ed
 
E

Ed Sheffler III

Just a quick update on this in case anyone is searching
for the same answers I was...

The app I created was a Semi-trust InfoPath Form with C#
code-behind (no digital signature) deployed to a
SharePoint form library in the Intranet domain. I used
NAnt, NAntContrib, makecab, VSS(Integrated with VS.NET),
and some custom NAnt tasks.

The makecab build directive builds the template.xsn file
and is composed of...

manifest.xsf
upgrade.xsl
sampledata.xml
view1.xsl
<file>.dll
template.xml
myschema.xsd

This build directive is called from within the NAnt build
file using the <exec> task.

The build file
1) performs the usual "checkouts" from vss
2) updates the Assembly version (AssemblyInfo.cs)
3) updates the manifest version (manifest.xsf)
4) updates the template version (template.xml)
5) creates the SharePoint web service proxy classes
(based on dev/test/staging/prod)
6) builds the .dll using the assembly/form code/web
service proxy classes
7) generates the xsn file using the updated files

The catch in all this is the updating of the
manifest.xsf, and template.xml files. If you use the
traditional <xmlpoke> NAnt task (nant-0.85-nightly-2005-
03-31), the whitespace is not preserved, which will add
newline characters that are unnacceptable to InfoPath's
xml parser. This will cause errors that will not allow
the form to be opened. In my case, I just wrote my own
custom "InfoPath version Update" task to work around this
issue.

The rest I'm still working on... integration with
CruiseControl, NUnit integration, automated deployment to
SharePoint.

+Ed
 
Top