diff --git a/scripts/update_vs_apps.pl b/scripts/update_vs_apps.pl
index 3607c80..2861241 100755
--- a/scripts/update_vs_apps.pl
+++ b/scripts/update_vs_apps.pl
@@ -12,18 +12,41 @@
 my $vs6_dir = "visualc/VS6";
 my $vs6_ext = "dsp";
 my $vs6_app_tpl_file = "scripts/data_files/vs6-app-template.$vs6_ext";
+my $vs6_main_tpl_file = "scripts/data_files/vs6-main-template.$vs6_ext";
+my $vs6_main_file = "$vs6_dir/polarssl.$vs6_ext";
 
 my $vsx_dir = "visualc/VS2010";
 my $vsx_ext = "vcxproj";
 my $vsx_app_tpl_file = "scripts/data_files/vs2010-app-template.$vsx_ext";
+my $vsx_main_tpl_file = "scripts/data_files/vs2010-main-template.$vsx_ext";
+my $vsx_main_file = "$vsx_dir/PolarSSL.$vsx_ext";
 
 my $programs_dir = 'programs';
+my $header_dir = 'include/polarssl';
+my $source_dir = 'library';
+
+# Need windows line endings!
+my $vs6_file_tpl = <<EOT;
+# Begin Source File\r
+\r
+SOURCE=..\\..\\{FILE}\r
+# End Source File\r
+EOT
+
+my $vsx_hdr_tpl = <<EOT;
+    <ClInclude Include="..\\..\\{FILE}" />\r
+EOT
+my $vsx_src_tpl = <<EOT;
+    <ClCompile Include="..\\..\\{FILE}" />\r
+EOT
 
 exit( main() );
 
 sub check_dirs {
     return -d $vs6_dir
         && -d $vsx_dir
+        && -d $header_dir
+        && -d $source_dir
         && -d $programs_dir;
 }
 
@@ -61,23 +84,67 @@
 }
 
 sub gen_app_files {
+    my @app_list = @_;
+
     my $vs6_tpl = slurp_file( $vs6_app_tpl_file );
     my $vsx_tpl = slurp_file( $vsx_app_tpl_file );
 
-    for my $app ( get_app_list() ) {
+    for my $app ( @app_list ) {
         gen_app( $app, $vs6_tpl, $vs6_dir, $vs6_ext );
         gen_app( $app, $vsx_tpl, $vsx_dir, $vsx_ext );
     }
 }
 
+sub gen_entry_list {
+    my ($tpl, @files) = @_;
+
+    my $entries;
+    for my $file (@files) {
+        (my $entry = $tpl) =~ s/{FILE}/$file/;
+        $entries .= $entry;
+    }
+
+    return $entries;
+}
+
+sub gen_main_file {
+    my ($headers, $sources, $hdr_tpl, $src_tpl, $main_tpl, $main_out) = @_;
+
+    my $header_entries = gen_entry_list( $hdr_tpl, @$headers );
+    my $source_entries = gen_entry_list( $src_tpl, @$sources );
+
+    my $out = slurp_file( $main_tpl );
+    $out =~ s/SOURCE_ENTRIES\r\n/$source_entries/m;
+    $out =~ s/HEADER_ENTRIES\r\n/$header_entries/m;
+
+    open my $fh, '>', $main_out or die;
+    print $fh $out;
+    close $fh;
+}
+
 sub main {
     if( ! check_dirs() ) {
         chdir '..' or die;
         check_dirs or die "Must but run from PolarSSL root or scripts dir\n";
     }
 
-    print "Generating apps files: ";
-    gen_app_files();
+    my @app_list = get_app_list();
+    my @headers = <$header_dir/*.h>;
+    my @sources = <$source_dir/*.c>;
+    map { s!/!\\!g } @headers;
+    map { s!/!\\!g } @sources;
+
+    print "Generating apps files... ";
+    gen_app_files( @app_list );
+    print "done.\n";
+
+    print "Generating main files... ";
+    gen_main_file( \@headers, \@sources,
+                   $vs6_file_tpl, $vs6_file_tpl,
+                   $vs6_main_tpl_file, $vs6_main_file );
+    gen_main_file( \@headers, \@sources,
+                   $vsx_hdr_tpl, $vsx_src_tpl,
+                   $vsx_main_tpl_file, $vsx_main_file );
     print "done.\n";
 
     return 0;
