VSoft Technologies Blogs


VSoft Technologies Blogs - posts about our products and software development.

If you want to automate the deployment of ClickOnce apps in FinalBuilder, Dennis van der Stelt has posted an excellent tutorial on bloggingabout.net.

Check it out and if you have any questions, contact us for help.

Do you currently use a Continuous Integration system?

Continuous Integration among FinalBuilder Users


Since releasing the full featured FBServer in April, we’ve seen healthy growth in its adoption as a Continuous Integration Server; however, the 2008 FB Survey showed quite low adoption of Continuous Integration systems in general among FinalBuilder users.

More importantly, of those not using any CI system, 2/3’s did not intend to start using a CI system in the next 12 months!

Do you plan to start using a Continuous Integration system within the next 12 months?

Future Continuous Integration adoption amoung FinalBuilder Users

For users of an automated build tool, most of whom have free access to a very easy-to-configure Continuous Integration server, these are incredibly low proportions! I can only speculate that perhaps the benefits of CI aren’t as well known, or appreciated, as the benefits of a fully automated build and release process.



This is the 3rd post in a series discussing insights uncovered in the 2008 FinalBuilder survey.

Top 10 Version Control Systems

Which Version Control System do you currently use?

FinalBuilder Cutomer's Source Control Preference Chart


This year’s results continue to provide an interesting insight into FB user’s version control tool of choice.

Most notably:

  1. Subversion has successfully grown to become number 1 among our customers. This is only a few years after trailing SourceSafe significantly in our 2005 survey.
  2. Despite the efforts of some influential commentators in the developer community (one in particular comes to mind), SourceSafe continues to be a very popular VCS, at least among FinalBuilder customers.
  3. It’s interesting, and quite surprising, to see the number of FB users who choose not to use a version control system. We tend to think of FB users as very savvy developers who seek out tools and technologies to improve their productivity, the type of developers some people generally include in the controversial 20% category. However, a surprisingly large number seem to choose not to use version control. I deliberately say choose, because I imagine every developer using FB is well and truly aware of both the options and benefits of using source control.
  4. TFS hasn’t come close to SourceSafe in adoption among FB users. I may be told I'm comparing apples with oranges, but it doesn't even look like adoption has grown much since 2006.

A few caveats about comparing this year's results with those of previous years. Each year’s survey has a random sample. This year, the VCS question was also worded slightly differently to that used in previous years.

In any case, it’s great to know that FinalBuilder supports all of the top 10 Source Control systems, in addition to many others.



This is the 2nd post in a series discussing insights uncovered in the 2008 FinalBuilder survey. Future posts will look at testing tool usage, Vista adoption and the pervasiveness of Continuous Integration.

What is your overall rating of FinalBuilder 6?


99% of FinalBuilder 6 users agree that the latest version is either good or excellent, while not a single respondent felt FinalBuilder 6 was poor or terrible!

This was one of the heartening statistics found in the 2008 FinalBuilder Survey. It's great to see that we're able to continue to meet and exceed your expectations!


This is the first in a series of posts discussing insights uncovered in the 2008 FinalBuilder survey. Future posts will cover source control and testing tool usage, Vista adoption and the pervasiveness of Continuous Integration.

Using Python in FinalBuilder

Today FB 6.1 was released as a beta version. One of the major new features in this version is Python language support. We're leveraging Microsoft's IronPython project for this, and because version 2 of IronPython is built on the Dynamic Language Runtime, we're expecting that as other DLR languages become available, we'll be able to support them in FinalBuilder as well.

The Python language is pretty neat, and the fact that IronPython interacts seamlessly with the .NET Framework makes it pretty powerful by itself. It shares this feature with PowerShell.

However, what really makes Python awesome is the amount of extra library functionality that comes with the standard language distribution.


This is a totally arbitrary example. Say your build process needs to calculate a SHA1 hash. FinalBuilder only supports MD5 at the moment. Can Python save the day?

Step One: Install Python Libraries

You need to install the Python standard libraries in order to get access to their many functions. You get this as part of the standard Windows Python distribution. Grab the "Windows Binary installer" from http://python.org/download/

Step Two: Tell FinalBuilder

You need to tell FinalBuilder where the Python library is installed. If you launch FinalBuilder and go to Tools -> Options -> FinalBuilder -> Script Options, as shown, you will see this options page:

Script Options Frame

Enter the path to the Python library directory, as shown here. The options page says you need to restart, but you actually only need to do this if you've run a Python script since you started FinalBuilder.

Step Three: Run Script Action

I use the Action filter to search for the all-purpose Run Script action, which I can then add to my project:

Actions Tab

Step Four: Type in Script

Here's my SHA1 script code. I entered this in the OnExecute event, under the Script Editor tab at the bottom of the main FinalBuilder IDE. Make sure you set the script language to "Python", as shown:

Script Editor view

Note that the FBVariables object behaves just like a normal Python dictionary.

Click here to download a sample project file.

Step Five: Run it!

Here's the log output from the SHA1 Run Script:

Log Output

Where do I go from here?

This was a pretty basic example, but the Python library provides you with literally hundreds of similar pieces of functionality. Take a look at the Python Library Reference for a complete list.

Can't I just use the .NET Framework?

Yes! The .NET Framework also provides you with a wealth of built-in functionality. Using it from IronPython is pretty simple, too. Here's Python code that performs the same functionality, written to use the .NET Framework instead of the Python library:

.NET Framework version

(It's a bit more complicated, mostly because I couldn't find a neat .NET-based way to convert a byte array to a hexadecimal string. Note that this approach does not require the Python libraries, it will work out of the box with FinalBuilder.)

Both sample scripts are included in the downloadable example.

It would also be possible to rewrite the .NET version to use PowerShell, instead. I'll leave that as an exercise.