Posted by: rusteddev | September 21, 2010

Virgin Mobile avec iPhone 3GS


Un post en Français pour une fois car je ne suis pas sûr que cela interesse grand monde à l’étranger… Je viens de changer de forfait et quitter Orange au but d’un an avec un forfait à 45€ pour un forfait sans engagment chez Virgin Mobile Liberty SIM à 30€ par mois. L’idée est bien entendu de garder mon iPhone 3GS et de profiter d”internet illimité à moindre coût.

Mais voilà, le truc c’est que même si le phone est débloqué (officiel par Orange), avec la carte SIM Virgin : les appels voix fonctinnent mais pour Internet et Mail ça marche pô…. En fait, il faut changer les paramétrages du réseau sur l’iPhone pour que cela soit possible.

Jusqu’à la mise à jour iOS 4.0, il fallait appliquer ce tuto

A partir de iOS 4 il n’est plus possible de synchroniser depuis iTunes tout en chargeant un fichier *.ipcc spécifique. Heureusement, il y a une solution encore plus simple et entièrement automatisée. Voici :

Unlockit Custom APN

  • Sélectionnez l’opérateur “FR – Virgin” et cliquer sur “Create Profile”. Le fichier sera télécharger sur votre iPhone. En cliquant sur “Email profile” vous pouvez vous envoyer la config par mail.

choix Virgin

  • Une fois les paramètres téléchargés, il faut les installer : cliquez sur “Installer” et voilà….

Installation des paramètres

Après y’a plus qu’à surfer et envoyer des mails… Pour moi cela marche bien, j’attends la première facture pour être sûr de ne pas avoir de mauvaise surprises! Mais en tout cas chapeau aux admins du site car cette solution est très propre.

N’ hésitez pas à faire des commentaires et à me dire si ça marche pour vous. J’ai pas poussé pour avoir le MMS et le partage de connxion Internet mais si certains y arrivent, partagez !

Posted by: rusteddev | September 10, 2010

Persistent Ubuntu Live USB – keep your config after boot

By default, Ubuntu liveUSB doesn’t keep  your data after computer restart. Drives are “read-only”. In order to “persist” data on liveUSB do this :

  1. Go to and download the a drive big enough for you. 4 size are possible :  128, 256 and 512 Mb.
  2. Extract zip file and copy it to your USB root directory. DO NOT CHANGE the name of the file. Must be casper-rw to work.
  3. Edit the file named syslinux.cfg and append the word “persistent” at the end of the line beginnig with “append”.

Here is my syslinux.cfg file

default menu.c32
prompt 0
menu title UNetbootin
timeout 100

label unetbootindefault
menu label Default
kernel /ubnkern
append initrd=/ubninit file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash persistent --

label ubnentry0
menu label ^Help
kernel /ubnkern
append initrd=/ubninit

Then Reboot your computer and start Ubuntu.
Now you see a new drive called “XXX Mb FileSystem” (XXX and free space on persistent drive) and can save your settings & changes (preferences, desktop background).
Posted by: rusteddev | September 9, 2010

Ubuntu LiveUSB with Unetbootin

Recently I discovered UnetBootIn (download here). This tool is fantastic! It’s a Windows based exe tool (no need to install and mess up your registry…) designed to create Linux boot drives.

In a few minutes you can test a linux distribution safely with a USB card.

One great feature is you don’t need to search for the last release ISO and download it. UnetBootIn can do it for you. Select the release in drop down list and UnetBootin automaticallydownloads it.

Here are the few steps required to create the Ubuntu 10.04 LiveUSB :

  1. Insert an empty USB stick (1Go is minimum)
  2. Execute UnetBootIn
  3. Select Distribution and Version (in my example I choose Ubuntu, 10.04_Live)
  4. Select USB Drive
  5. Click OK.

UnetBootIn config

When UnetBootIn has finished, you can reboot your system and boot from USB. Don’t forgert to change boot order and activate USB boot in BIOS (I do this by hitting F2 on my laptop).

At blue boot screen select hit enter on default or wait 10 seconds.

Ubuntu starts …. not very quickly (….ok it’s USB…).

Ubuntu load

Then Ubuntu dektop appears ….

Ubuntu desktop

This is great, enjoy !

Posted by: rusteddev | September 7, 2010

Silent install of WCF Lob Adapter Pack SDK = Partial Install

Beware that the silent install of the WCF Lob Adapter Pack does not install every component. In particular, Tools are not installed.

To install these features in silent mode you should use this command (for x86 install, change for AdapterFramework.msi):
msiexec /quiet /i AdapterFramework64.msi addlocal=all

This is not mentioned in MS Install available in the install folder (InstallationGuide.htm) :


Posted by: rusteddev | September 1, 2010

Max Number of Applications in BizTalk 2010 Beta

Hi there,

A few days ago, I googled about the maximum number of applications BizTalk Enterprise can handle. I didn’t find anything interesting. Only the limit of 5 BizTalk applications in the standard edition resulted.

A colleague told me “it’s unlimited”, tested with 10 000.

Ok, great, but 10 000 is not unlimited, is there really a limit in BizTalk ? I wanted to know the exact limit, so I wrote this quick C Sharp test app to test the limit !

here is the app (binaries and sources zipped). The console app create dummy BizTalk Apps using ExporerOM api. Run the command TestBizMaxNumberOfApp in cmd prompt.

After a few minutes I managed to get 500 000 application declared on my Biztalk Server (4Gb RAM VM) see above. Admin console then get very slow…. but worked….

more than 500 000 apps in BizTalk

What about you? Did you reach the limit ? Feel free to share !

Posted by: rusteddev | July 30, 2010

Silently unzip AutoExtract .exe files

If you want to unzip an auto-extrac (.exe) file by command line, don’t try to execute the file with the /S option. It won’t work. The right command is : myAutoExtractFile.exe /auto c:\temp

The /auto option extract archive content to the folder specified. This one will be created if necessary and existing files will be overwritten.

It helped me during my Biztalk 2010 silent install, for the auto-extract WCF Lob Adapter SDK & Adapter Pack.

Posted by: rusteddev | July 28, 2010

Exit telnet client

I’ve been wondering for a long time how to quit from the “blank” screen when successfully connect to server using telnet command line :

The answer is this : Ctrl-$ and type quit and press Enter

Good to know …

Posted by: rusteddev | July 19, 2010

Expose WCF Service with BizTalk 2010 tutorial

Hello world !

Today my first tutorial on BizTalk. I’ll show you how to expose a WebService through BizTalk using the “BizTalk WCF Service Publishing wizard”.

The business case is this : I want to expose a WS that will allow a partner to send me customer invoices. These invoices processed by BizTalk might then be sent both to SAP for partner’s billing and to a datawarehouse for analysis.

  • Step 1 – Prepare the data contract : Create a BizTalk project containing only 1 schema. It wil be used for the customer invoice message (Invoice.xsd). Build the project. Don’t forget to sign the assembly so that it can be deployed to GAC

Create XML Schema for your WS request

  • Step 2 – Prepare your Biztalk application : Create an empty biztalk application using BizTalk management console. The wizard will use this application to deploy your WCF Receive Location. Name it BizWCFTutorialApp.
create a  new application using biztalk administration console

create a new application using biztalk administration console

Now add the schema assembly to your BizTalk application (Right CLick on BizTalk Application then Add, BizTalk Assemblies). This will be useful for the Xm lReceive Pipeline of your WCF ReceiveLocation.

Add the .dll to your application

  • Step 3 – Run the wizard : Run the BizTalk WCF Service Publishing wizard. Choose the Service Endpoint with WCF-BasicHttp transport type, enable metadata endpoint and create BizTalk ReceiveLocation in the biztalk application BizWCFTutorialApp you’ve just created.

Choose Service Endpoint with WCF-BasicHttp adapter

Then choose to publish the previously created schemas as WCF Service.

publish schemas as WCF Service

In the next screen, you should  customize the Web Service description with the following operations. Use your right click :

    • Rename WCF service description to “BizTalkWcfServiceTutorial
    • Rename Web Service to “InvoiceService
    • Delete default Web-Method “Operation1” because its a request / response method.
    • Add a new one way web method called “setInvoice
    • Select the schema type “InvoiceSchemas.Invoice” for your request message. You will need to open the generated dll in your bin/debug folder.

Your screen should be like this :

Define your WCF service

To finish the wizard give the WCF Service a tagetnamespace (I suggest http://MyCompany.Services.InvoiceService) and choose a location (I leave default http://localhost/BizTalkWcfServiceTutorial). Allow anonymous access : it would be much easier for a first try.

Choose location and allow anonymous access

then you should be able to create the Service and end up to the following screen.

the wizard is over

  • Step 4 : Adapt IIS & BizTalk – In order for your WS to work you might need to change a few things.
    • First, as a good practice create a dedicated App Pool for your service. Go to IIS mangement console and create a new App Pool “BizTalkWcfServiceTutorialAppPool”. If you are like me and use BizTalk Server 2010, you must change the app pool .Net Framework to version  4.0. Then change your Service App Pool to the newly created one.

create a dedicated app pool

    • Give enough privileges to your app pool by choosing the right identity. I suggest admin for development purposes.
    • In BizTalk now :
      • Change the name of the wizard created WCF Receivelocation called WcfService_BizTalkWcfServiceTutorial/InvoiceService to something easier like “RcvLoc_Invoice_WCF”.
      • Change the ReceivePort to “RcvPort_Invoice_WCF”
      • Add a send port SendPort_Invoice_WCF and make it subscribe to messages from the app ReceivePort.
      • Start the application.

If you go to your WS page (normally http://localhost/BizTalkWcfServiceTutorial/InvoiceService.svc) and everything went fine you should be able to see this page :

your WCF Service should be up and ready

It migth fails because (I’ve been through this):

    • When choosing message type in the WCF Publishing wizard, you select a dll and a screen shows you availables schemas types available in the assembly so that you can choose wich one to expose as a service. In fact this is not really that. If you have the same .dll deployed to gac this screen shows you the gac dll content and not the content of the dll you’ve just selected. If like me you change and change again your Message types, you should be aware of that.

beware it might be Gac dll content not your dll content


  • Step 5 : Create the client application : Add a new console application project (named BizWCFTutorialClientApp) inside your already existing solution app (the one your crated for the XML Schema).
    • Add a new reference to System.ServiceModel inside your project

Add Reference to System.ServiceModel

    •  Add Service Reference to your previously created and deployed WS :

Add Service Reference

    • Your solution should look like below. Note that the app.config has been automatically generated.

Client App Project files

    • Now it’s time to hand code the call to your Service :
using System;
using BizWCFTutorialClientApp.InvoiceServiceReference;

namespace BizWCFTutorialClientApp
    class Program
        static void Main(string[] args)
            //Use the client proxy
            InvoiceServiceClient client = new InvoiceServiceClient();

            //Prepare the incoive
            Invoice i = new Invoice();
            i.Id = "1";
            //Add a line
            InvoiceLine l = new InvoiceLine();
            l.ProductEAN = "123123";
            l.Qty = "2";
            l.TaxAmount = 0.25;
            l.UnitPrice = 1000;
            i.Line = new InvoiceLine[1];
            i.Line[0] = l;

                //Create the Invoice via WS
            catch (Exception e)
                Console.Out.WriteLine("Error occured while calling the method setInvoice()");
                throw e;
                // Always close the client.

            Console.Out.WriteLine("Invoice created");


  • Step 6 : Test your Service and see the result in BizTalk

Now you are ready to Test your WS using the client and see the results in BizTalk. F5 the project “BizWCFTutorialClientApp”. You should see the following in BizTalk :

Tracked services instances

You can see 2 lines highlighted : the older represents the XML ReceivePipeline pipeline (notice it is run under BizTalk Isolated Host), it worked OK ; and the above line represents the send pipeline : pub/sub worked and message has been succesfully sent. See content matches your client code.

The result : invoice has been processed by BizTalk !

Done !

VS code (schemas, client console app, and bizTalk binding) is available here. As uploads of .zip files aren’t supported, you’ll have to delete the .jpg after saving the file to your computer.  Sorry about that.

I hope this tutorial is usefull to you : let me know !

Posted by: rusteddev | June 30, 2010

Map drive to Sharepoint library on Windows Server 2008 R2

Today I needed a solution to interact with sharepoint acting as a repository of files. I’m not talking of source repository (for which TFS repository is more appropriate). My purpose is to use my sharepoint  team portal as a document management tool (Edit, Store, Publish, Manage rights and versions, ….) and download configuration files from a central repository in my build process. I was planning to use WSS 3.0 webservices. Asking for advice from one of my collegues on on how to programmatically downlad files from Sharepoint he said “Why don’t you just map your Sharepoint library to network drive ?”….. Brilliant …

It is obviously a great idea, because I’m not required to do WS plumbing to ask / get documents from WSS. A simple “copy” dos command will do the trick !

Yes but, with Windows Server 2008 R2 even simple thinks like mapping a network drive aren’t as straighforward as for Windows XP.

Mapping network drive without WebDAV

Mapping network drive requires WebDAV Client to be running on. By default this service is not running. To activate it, add “Desktop Experience” Feature (…..strange…… isn’t it ?) in Server Manager as shown below :

Add "Desktop Experience" feature

A reboot is needed for change to take effect. After the reboot, go to Services console and Start “WebDav Client” Service.

Start WebClient service

You can then map your drive to the library adress like http://mytfsserver/sites/MySite/MyLibrary  and start using this drive like a disk drive (except maybe the speed which in was slow…)

Notes : As my WS 2008 R2 is not acting as a Sharepoint server (only connecting to it while building), this is the only opereation needed. But, if you have Sharepoint installed on your client machine that needs to connect to Sharepoint, you have to unistall WebDav Module from ISS site. See detailed procedure here

Today I tried to make my BizTalk 2010 solutions Build automatically with tfs 2010 and it works !

But it wasn’t easy anyway. I got plenty of errors when compiling like these :

  1. In Schema projects : CSC: Source file ‘C:\Builds\3\BusV4\Build_Process_\xxxxxx.xsd.cs’ could not be found
  2. In transform projects (Maps) : 
C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets (115): The “MapperCompiler” task failed unexpectedly. System.IO.FileNotFoundException: Could not load file or assembly ‘Microsoft.BizTalk.TOM, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35′ or one of its dependencies. The system cannot find the file specified. File name: ‘Microsoft.BizTalk.TOM, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ —> System.IO.FileNotFoundException: Could not load file or assembly ‘file:///C:\Program Files\Common Files\Microsoft BizTalk\Microsoft.BizTalk.Tom.dll’ or one of its dependencies.


C:\Program Files (x86)\MSBuild\Microsoft\BizTalk\BizTalkCommon.targets (115): The “MapperCompiler” task failed unexpectedly. System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {AA9DB8EC-0E8C-4188-B070-2C763386B9FB} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). at Microsoft.VisualStudio.BizTalkProject.Compiler.MapCompiler.Compile(BizTalkBuildSnapshot buildSnapshot, IEnumerable`1 mapFilesToCompile, IEnumerable`1 schemaFiles, List`1& generatedCodeFiles, List`1& xsltFiles) at Microsoft.VisualStudio.BizTalkProject.BuildTasks.MapperCompiler.Execute() at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)


I googled about these individual problems. Found no real answers (here & here). Workarounds (like adding .cs files to tfs source repository for n°1 or gac external needed dlls) aren’t satisfying because other errors came by afterwards …..

After a while, I figured out  that I wasn’t looking at the real problem. All these errors are consequences of using x64 version of MSBUILD :-). And of course BizTalk projects aren’t good with x64 build tasks. So changing the MSBuild platform option in TFS build definition immediatly solved the issue ! See below :


And by the way believe me : there is no Visual Studio 2010 or BizTalk SDK installed on that platform. These component are not necessary to build BizTalk projects (SDK needed for tests apparently… see  here …. i didn’t go that far for the moment). To build I only installed :

 * Biztalk Server 2010 Beta (including Project Build Component)

* TFS 2010 Build Services (included in tfs2010 install cd)

« Newer Posts - Older Posts »


%d bloggers like this: