It seems OK (the file properties in IS says me 5.06.0666). When I install the msi (msiexec.exe /i (mydir\5.06.0150\MyMSI.Msi), the 5.06.0663 version is installed !!!

In mydir\5.06.0100\MyMSI.Msi, I have only a stream (Data1.cab)
In mydir\5.06.0150\MyMSI.Msi, I have 2 stream (Data1.cab and Data2.cab).
I try to extract the streams Data1.cab (msidb.exe -d "mydir\5.06.0100\MyMSI.Msi" -x "Data1.cab") and Data2.cab(msidb.exe -d "mydir\5.06.0100\MyMSI.Msi" -x "Data2.cab"), the file is both in Data1.cab (5.06.0663) and Data2.cab (5.06.0666). But in the media Table, IS sets a new sequence for a new media. In the File table, the version and the FileSize fileds are good. For me, everything is good.
Where is my problem ?
So I try to update the MSI file by hand:
- I extract the stream :
msidb.exe -d "mydir\5.06.0100\MyMSI.Msi" -x "Data1.cab"
- I extract the cab :
CabArc.Exe X "mydir\5.06.0100\Data1.cab" *.* "mydir\5.06.0150\cab"
- I copy the new file in mydir\5.06.0150\cab
- I rebuid the cab :
CabArc.Exe N Data1.cab *.*
- I copy "mydir\5.06.0100\MyMSI.Msi" to "mydir\5.06.0150\MyMSI.Msi"
- I remove the stream in "mydir\5.06.0150\MyMSI.Msi"
msidb.exe -d "mydir\5.06.0150\MyMSI.Msi" -k "Data1.cab"
- I add the new Data1.cab :
msidb.exe -d "mydir\5.06.0150\MyMSI.Msi" -a "Data1.cab"
- I update the File table :
msifiler -d "mydir\5.06.0150\MyMSI.Msi" -s mydir\5.06.0150\cab\
When I install, the 5.06.0663 is install !!!

One more time, where is my problem ?