Esempio n. 1
0
        // Build
        public static void BuildMain(BuildSoftware soft, bool debugModeIfUnix)
        {
            int      version, build;
            string   name;
            DateTime date;

            string title = Console.Title;

            Console.Title = string.Format("Building {0}", soft.IDString);

            try
            {
                Win32BuildUtil.ReadBuildInfoFromTextFile(out build, out version, out name, out date);

                soft.SetBuildNumberVersionName(build, version, name, date);

                Con.WriteLine("Building '{0}' - {1}...", soft.IDString, soft.TitleString);

                BuildSoftwareUnix softUnix = soft as BuildSoftwareUnix;

                if (softUnix == null)
                {
                    soft.Build();
                }
                else
                {
                    softUnix.Build(debugModeIfUnix);
                }
            }
            finally
            {
                Console.Title = title;
            }
        }
Esempio n. 2
0
        static int CopyRelease(ConsoleService c, string cmdName, string str)
        {
            ConsoleParam[] args =
            {
            };
            ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args);

            int build, version;
            string name;
            DateTime date;
            Win32BuildUtil.ReadBuildInfoFromTextFile(out build, out version, out name, out date);

            string baseName = string.Format("v{0}-{1}-{2}-{3:D4}.{4:D2}.{5:D2}",
                                    BuildHelper.VersionIntToString(version),
                                    build,
                                    name,
                                    date.Year, date.Month, date.Day);

            #if !BU_OSS
            string destDirName = Path.Combine(Paths.ReleaseDestDir,
                string.Format(@"{0}-{1}-{2}-{3}",
                    Str.DateToStrShort(BuildSoftwareList.ListCreatedDateTime),
                    baseName,
                    Env.MachineName, Env.UserName));
            #else	// !BU_OSS
            string destDirName = Path.Combine(Paths.ReleaseDestDir,
                string.Format(@"{1}",
                    Str.DateToStrShort(BuildSoftwareList.ListCreatedDateTime),
                    baseName,
                    Env.MachineName, Env.UserName));
            #endif

            #if !BU_OSS
            string publicDir = Path.Combine(destDirName, "Public");
            #else	// !BU_OSS
            string publicDir = destDirName;
            #endif

            #if !BU_OSS
            string filesReleaseDir = Path.Combine(publicDir, baseName);
            #else	// !BU_OSS
            string filesReleaseDir = publicDir;
            #endif

            string autorunReleaseSrcDir = Path.Combine(publicDir, "autorun");

            IO.CopyDir(Paths.ReleaseDir, filesReleaseDir, null, false, true);

            #if !BU_OSS
            IO.CopyDir(Paths.ReleaseSrckitDir, Path.Combine(destDirName, "Private"), null, false, true);
            IO.CopyDir(Path.Combine(Paths.BaseDirName, @"tmp\lib"), Path.Combine(destDirName, @"Private\lib"), null, false, true);
            #endif

            //IO.MakeDir(autorunReleaseSrcDir);

            /*
            File.Copy(Path.Combine(Paths.AutorunSrcDir, "Project1.exe"),
                Path.Combine(autorunReleaseSrcDir, "autorun.exe"), true);

            File.Copy(Path.Combine(Paths.AutorunSrcDir, "autorun.inf"),
                Path.Combine(autorunReleaseSrcDir, "autorun.inf"), true);

            File.Copy(Path.Combine(Paths.AutorunSrcDir, "packetix.ico"),
                Path.Combine(autorunReleaseSrcDir, "autorun.ico"), true);*/

            // Create a batch file
            string batchFileName = Path.Combine(publicDir, "MakeCD.cmd");
            #if !BU_OSS
            StreamWriter w = new StreamWriter(batchFileName);
            #else	// !BU_OSS
            StringWriter w = new StringWriter();
            #endif
            w.WriteLine(@"SETLOCAL");
            w.WriteLine(@"SET BATCH_FILE_NAME=%0");
            w.WriteLine(@"SET BATCH_DIR_NAME=%0\..");
            w.WriteLine(@"SET NOW_TMP=%time:~0,2%");
            w.WriteLine(@"SET NOW=%date:~0,4%%date:~5,2%%date:~8,2%_%NOW_TMP: =0%%time:~3,2%%time:~6,2%");
            w.WriteLine();
            w.WriteLine();

            string[] files = Directory.GetFiles(filesReleaseDir, "*", SearchOption.AllDirectories);

            string cddir = "CD";
                /*string.Format("CD-v{0}.{1}-{2}-{3}-{4:D4}.{5:D2}.{6:D2}",
                version / 100, version % 100, build, name,
                date.Year, date.Month, date.Day);*/

            StringWriter txt = new StringWriter();

            foreach (string filename in files)
            {
                string file = filename;

                BuildSoftware s = new BuildSoftware(file);

                // Software\Windows\PacketiX VPN Server 4.0\32bit (Intel x86)\filename.exe
                string cpustr = string.Format("{0} - {1}", CPUBitsUtil.CPUBitsToString(s.Cpu.Bits), s.Cpu.Title).Replace("/", "or");
                string cpustr2 = cpustr;

                if (s.Cpu == CpuList.intel)
                {
                    cpustr2 = "";
                    cpustr = "Intel";
                }

                string tmp = string.Format(@"{1}\{2}\{3}\{5}{4}",
                    0,
                    s.Os.Title,
                    BuildHelper.GetSoftwareTitle(s.Software),
                    cpustr2,
                    Path.GetFileName(file),
                    ""
                    );

                tmp = Str.ReplaceStr(tmp, "\\\\", "\\");

                tmp = Str.ReplaceStr(tmp, " ", "_");

                w.WriteLine("mkdir \"{1}\\{0}\"", Path.GetDirectoryName(tmp), cddir);
                w.WriteLine("copy /b /y \"{2}\\{0}\" \"{3}\\{1}\"", IO.GetRelativeFileName(file, filesReleaseDir), tmp, baseName, cddir);
                w.WriteLine();

                string txt_filename = tmp;
                txt_filename = Str.ReplaceStr(txt_filename, "\\", "/");

                string txt_description = BuildHelper.GetSoftwareTitle(s.Software);

                string txt_products = BuildHelper.GetSoftwareProductList(s.Software);

                string txt_os = s.Os.Title;

                string txt_cpu = s.Cpu.Title;
                if (s.Cpu.Bits != CPUBits.Both)
                {
                    txt_cpu += " (" + CPUBitsUtil.CPUBitsToString(s.Cpu.Bits) + ")";
                }
                else
                {
                    txt_cpu += " (x86 and x64)";
                }

                string txt_version = BuildHelper.VersionIntToString(version);

                string txt_build = build.ToString();

                string txt_verstr = name;

                string txt_date = Str.DateTimeToStrShortWithMilliSecs(date);

                string txt_lang = "English, Japanese, Simplified Chinese";

                string txt_category = "PacketiX VPN (Commercial)";

            #if BU_SOFTETHER
                txt_category = "SoftEther VPN (Freeware)";
            #endif

                txt.WriteLine("FILENAME\t" + txt_filename);
                txt.WriteLine("DESCRIPTION\t" + txt_description);
                txt.WriteLine("CATEGORY\t" + txt_category);
                txt.WriteLine("PRODUCT\t" + txt_products);
                txt.WriteLine("OS\t" + txt_os);
                txt.WriteLine("OSLIST\t" + s.Os.OSSimpleList);
                txt.WriteLine("CPU\t" + txt_cpu);
                txt.WriteLine("VERSION\t" + txt_version);
                txt.WriteLine("BUILD\t" + txt_build);
                txt.WriteLine("VERSTR\t" + txt_verstr);
                txt.WriteLine("DATE\t" + txt_date);
                txt.WriteLine("LANGUAGE\t" + txt_lang);
                txt.WriteLine("*");
                txt.WriteLine();
            }

            #if BU_OSS
            Con.WriteLine("Installer packages are built on '{0}'. Enjoy it !!", publicDir);

            return 0;
            #endif	// BU_OSS

            /*
            w.WriteLine("mkdir \"{0}\\autorun\"", cddir);
            w.WriteLine("copy /b /y autorun\\autorun.ico \"{0}\\autorun\"", cddir);
            w.WriteLine("copy /b /y autorun\\autorun.exe \"{0}\\autorun\"", cddir);
            w.WriteLine("copy /b /y autorun\\autorun.inf \"{0}\\autorun.inf\"", cddir);
             * */

            string zipFileName = string.Format("VPN-CD-v{0}.{1:D2}-{2}-{3}-{4:D4}.{5:D2}.{6:D2}.zip",
                version / 100, version % 100, build, name,
                date.Year, date.Month, date.Day);
            w.WriteLine("del {0}", zipFileName);
            w.WriteLine("CD {0}", cddir);
            w.WriteLine("zip -r -0 ../{0} *", zipFileName);
            w.WriteLine("cd ..");
            w.WriteLine("move {0} CD\\", zipFileName);
            w.WriteLine("rename CD {0}-tree", baseName);
            w.WriteLine();

            w.Close();

            // Copy of fastcopy
            string fastcopy_dest = Path.Combine(destDirName, @"Private\fastcopy_bin");
            IO.MakeDirIfNotExists(fastcopy_dest);
            File.Copy(Path.Combine(Paths.UtilityDirName, "FastCopy.exe"), Path.Combine(fastcopy_dest, "FastCopy.exe"), true);
            File.Copy(Path.Combine(Paths.UtilityDirName, "FastEx64.dll"), Path.Combine(fastcopy_dest, "FastEx64.dll"), true);
            File.Copy(Path.Combine(Paths.UtilityDirName, "FastExt1.dll"), Path.Combine(fastcopy_dest, "FastExt1.dll"), true);

            string fastcopy_exe = @"..\Private\fastcopy_bin\FastCopy.exe";

            // Create a upload batch
            string uploadBatchFileName = Path.Combine(publicDir, "UploadNow.cmd");
            #if !BU_OSS
            w = new StreamWriter(uploadBatchFileName);
            #endif	// !BU_OSS

            string folder_name = "packetix";
            #if BU_SOFTETHER
            folder_name = "softether";
            #endif
            w.WriteLine(@"mkdir \\download\FILES\{1}\{0}-tree", baseName, folder_name);
            w.WriteLine(@"{0} /cmd=force_copy /exclude={3} /auto_close /force_start /estimate /open_window /error_stop=TRUE /bufsize=128 /disk_mode=diff /speed=full /verify {1}-tree /to=\\download\FILES\{2}\{1}-tree", fastcopy_exe, baseName, folder_name,
                "\"*files.txt*\"");

            w.WriteLine();
            /*
            w.WriteLine(@"mkdir \\downloadjp\FILES\{1}\{0}-tree", baseName, folder_name);
            w.WriteLine(@"{0} /cmd=force_copy /exclude={3} /auto_close /force_start /estimate /open_window /error_stop=TRUE /bufsize=128 /disk_mode=diff /speed=full /verify {1}-tree /to=\\downloadjp\FILES\{2}\{1}-tree", fastcopy_exe, baseName, folder_name,
                "\"*files.txt*\"");

            w.WriteLine();*/

            w.WriteLine(@"copy /y /b {0}-tree\files.txt \\download\FILES\{1}\{0}-tree\files.txt", baseName, folder_name);
            //w.WriteLine(@"copy /y /b {0}-tree\files.txt \\downloadjp\FILES\{1}\{0}-tree\files.txt", baseName, folder_name);

            w.WriteLine();
            w.WriteLine(@"pause");
            w.WriteLine();

            w.Close();

            txt.WriteLine("FILENAME\t" + zipFileName);
            #if BU_SOFTETHER
            txt.WriteLine("DESCRIPTION\t" + "ZIP CD-ROM Image Package of SoftEther VPN (for Admins)");
            txt.WriteLine("CATEGORY\t" + "SoftEther VPN (Freeware)");
            txt.WriteLine("PRODUCT\t" + "ZIP CD-ROM Image Package of SoftEther VPN");
            #else	// BU_SOFTETHER
            txt.WriteLine("DESCRIPTION\t" + "ZIP CD-ROM Image Package of PacketiX VPN (for Admins)");
            txt.WriteLine("CATEGORY\t" + "PacketiX VPN (Commercial)");
            txt.WriteLine("PRODUCT\t" + "ZIP CD-ROM Image Package of PacketiX VPN");
            #endif	// BU_SOFTETHER
            txt.WriteLine("OS\t" + "Any");
            txt.WriteLine("OSLIST\t" + "Any");
            txt.WriteLine("CPU\t" + "CD-ROM");
            txt.WriteLine("VERSION\t" + BuildHelper.VersionIntToString(version));
            txt.WriteLine("BUILD\t" + build.ToString());
            txt.WriteLine("VERSTR\t" + name);
            txt.WriteLine("DATE\t" + Str.DateTimeToStrShortWithMilliSecs(date));
            txt.WriteLine("LANGUAGE\t" + "English, Japanese, Simplified Chinese");
            txt.WriteLine("*");
            txt.WriteLine();

            string src_bindir = Path.Combine(Paths.BaseDirName, "bin");
            string vpnsmgr_zip_filename_relative = @"Windows\Admin_Tools\VPN_Server_Manager_and_Command-line_Utility_Package\";
            vpnsmgr_zip_filename_relative +=
            #if BU_SOFTETHER
                "softether-" +
            #endif	// BU_SOFTETHER
            string.Format("vpn_admin_tools-v{0}.{1:D2}-{2}-{3}-{4:D4}.{5:D2}.{6:D2}-win32.zip",
                version / 100, version % 100, build, name,
                date.Year, date.Month, date.Day);

            string vpnsmgr_zip_filename_full = Path.Combine(Path.Combine(publicDir, cddir), vpnsmgr_zip_filename_relative);

            ZipPacker zip = new ZipPacker();
            zip.AddFileSimple("vpnsmgr.exe", DateTime.Now, FileAttributes.Normal,
                IO.ReadFile(Path.Combine(src_bindir, "vpnsmgr.exe")), true);
            zip.AddFileSimple("vpncmd.exe", DateTime.Now, FileAttributes.Normal,
                IO.ReadFile(Path.Combine(src_bindir, "vpncmd.exe")), true);
            zip.AddFileSimple("hamcore.se2", DateTime.Now, FileAttributes.Normal,
                IO.ReadFile(Path.Combine(src_bindir, @"BuiltHamcoreFiles\hamcore_win32\hamcore.se2")), true);
            zip.AddFileSimple("ReadMeFirst_License.txt", DateTime.Now, FileAttributes.Normal,
                IO.ReadFile(Path.Combine(src_bindir, @"hamcore\eula.txt")), true);
            zip.AddFileSimple("ReadMeFirst_Important_Notices_ja.txt", DateTime.Now, FileAttributes.Normal,
                IO.ReadFile(Path.Combine(src_bindir, @"hamcore\warning_ja.txt")), true);
            zip.AddFileSimple("ReadMeFirst_Important_Notices_en.txt", DateTime.Now, FileAttributes.Normal,
                IO.ReadFile(Path.Combine(src_bindir, @"hamcore\warning_en.txt")), true);
            zip.AddFileSimple("ReadMeFirst_Important_Notices_cn.txt", DateTime.Now, FileAttributes.Normal,
                IO.ReadFile(Path.Combine(src_bindir, @"hamcore\warning_cn.txt")), true);
            zip.Finish();
            byte[] zip_data = zip.GeneratedData.Read();
            IO.MakeDirIfNotExists(Path.GetDirectoryName(vpnsmgr_zip_filename_full));
            IO.SaveFile(vpnsmgr_zip_filename_full, zip_data);

            // ZIP package for VPN Server Manager GUI
            txt.WriteLine("FILENAME\t" + Str.ReplaceStr(vpnsmgr_zip_filename_relative, @"\", "/"));
            #if BU_SOFTETHER
            txt.WriteLine("DESCRIPTION\t" + "ZIP Package of vpnsmgr.exe and vpncmd.exe (without installers)");
            txt.WriteLine("CATEGORY\t" + "SoftEther VPN (Freeware)");
            txt.WriteLine("PRODUCT\t" + "SoftEther VPN Server Manager for Windows, SoftEther VPN Command-Line Admin Utility (vpncmd)");
            #else	// BU_SOFTETHER
            txt.WriteLine("DESCRIPTION\t" + "ZIP Package of vpnsmgr.exe and vpncmd.exe (without installers)");
            txt.WriteLine("CATEGORY\t" + "PacketiX VPN (Commercial)");
            txt.WriteLine("PRODUCT\t" + "PacketiX VPN Server Manager for Windows, PacketiX VPN Command-Line Admin Utility (vpncmd)");
            #endif	// BU_SOFTETHER
            txt.WriteLine("OS\t" + "Windows (.zip package without installers)");
            txt.WriteLine("OSLIST\t" + OSList.Windows.OSSimpleList);
            txt.WriteLine("CPU\t" + "Intel (x86 and x64)");
            txt.WriteLine("VERSION\t" + BuildHelper.VersionIntToString(version));
            txt.WriteLine("BUILD\t" + build.ToString());
            txt.WriteLine("VERSTR\t" + name);
            txt.WriteLine("DATE\t" + Str.DateTimeToStrShortWithMilliSecs(date));
            txt.WriteLine("LANGUAGE\t" + "English, Japanese, Simplified Chinese");
            txt.WriteLine("*");
            txt.WriteLine();

            IO.MakeDirIfNotExists(Path.Combine(publicDir, cddir));
            File.WriteAllText(Path.Combine(Path.Combine(publicDir, cddir), "files.txt"), txt.ToString(), Str.Utf8Encoding);

            // Execution of batch file
            string old_cd = Environment.CurrentDirectory;

            try
            {
                Environment.CurrentDirectory = Path.GetDirectoryName(batchFileName);
            }
            catch
            {
            }

            Win32BuildUtil.ExecCommand(Paths.CmdFileName, string.Format("/C \"{0}\"", batchFileName));

            try
            {
                Environment.CurrentDirectory = old_cd;
            }
            catch
            {
            }

            Con.WriteLine();
            Con.WriteLine("'{0}' に出力されました。", destDirName);

            return 0;
        }
Esempio n. 3
0
        // Build
        public static void BuildMain(BuildSoftware soft, bool debugModeIfUnix)
        {
            int version, build;
            string name;
            DateTime date;

            string title = Console.Title;
            Console.Title = string.Format("Building {0}", soft.IDString);

            try
            {
                Win32BuildUtil.ReadBuildInfoFromTextFile(out build, out version, out name, out date);

                soft.SetBuildNumberVersionName(build, version, name, date);

                Con.WriteLine("Building '{0}' - {1}...", soft.IDString, soft.TitleString);

                BuildSoftwareUnix softUnix = soft as BuildSoftwareUnix;

                if (softUnix == null)
                {
                    soft.Build();
                }
                else
                {
                    softUnix.Build(debugModeIfUnix);
                }
            }
            finally
            {
                Console.Title = title;
            }
        }
Esempio n. 4
0
        static int CopyRelease(ConsoleService c, string cmdName, string str)
        {
            ConsoleParam[] args =
            {
            };
            ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args);

            int      build, version;
            string   name;
            DateTime date;

            Win32BuildUtil.ReadBuildInfoFromTextFile(out build, out version, out name, out date);

            string baseName = string.Format("v{0}-{1}-{2}-{3:D4}.{4:D2}.{5:D2}",
                                            BuildHelper.VersionIntToString(version),
                                            build,
                                            name,
                                            date.Year, date.Month, date.Day);

#if !BU_OSS
            string destDirName = Path.Combine(Paths.ReleaseDestDir,
                                              string.Format(@"{0}-{1}-{2}-{3}",
                                                            Str.DateToStrShort(BuildSoftwareList.ListCreatedDateTime),
                                                            baseName,
                                                            Env.MachineName, Env.UserName));
#else   // !BU_OSS
            string destDirName = Path.Combine(Paths.ReleaseDestDir,
                                              string.Format(@"{1}",
                                                            Str.DateToStrShort(BuildSoftwareList.ListCreatedDateTime),
                                                            baseName,
                                                            Env.MachineName, Env.UserName));
#endif

#if !BU_OSS
            string publicDir = Path.Combine(destDirName, "Public");
#else   // !BU_OSS
            string publicDir = destDirName;
#endif

#if !BU_OSS
            string filesReleaseDir = Path.Combine(publicDir, baseName);
#else   // !BU_OSS
            string filesReleaseDir = publicDir;
#endif

            string autorunReleaseSrcDir = Path.Combine(publicDir, "autorun");

            IO.CopyDir(Paths.ReleaseDir, filesReleaseDir, null, false, true);

#if !BU_OSS
            IO.CopyDir(Paths.ReleaseSrckitDir, Path.Combine(destDirName, "Private"), null, false, true);
            IO.CopyDir(Path.Combine(Paths.BaseDirName, @"tmp\lib"), Path.Combine(destDirName, @"Private\lib"), null, false, true);
#endif

            //IO.MakeDir(autorunReleaseSrcDir);

            /*
             * File.Copy(Path.Combine(Paths.AutorunSrcDir, "Project1.exe"),
             *      Path.Combine(autorunReleaseSrcDir, "autorun.exe"), true);
             *
             * File.Copy(Path.Combine(Paths.AutorunSrcDir, "autorun.inf"),
             *      Path.Combine(autorunReleaseSrcDir, "autorun.inf"), true);
             *
             * File.Copy(Path.Combine(Paths.AutorunSrcDir, "packetix.ico"),
             *      Path.Combine(autorunReleaseSrcDir, "autorun.ico"), true);*/

            // Create a batch file
            string batchFileName = Path.Combine(publicDir, "MakeCD.cmd");
#if !BU_OSS
            StreamWriter w = new StreamWriter(batchFileName);
#else   // !BU_OSS
            StringWriter w = new StringWriter();
#endif
            w.WriteLine(@"SETLOCAL");
            w.WriteLine(@"SET BATCH_FILE_NAME=%0");
            w.WriteLine(@"SET BATCH_DIR_NAME=%0\..");
            w.WriteLine(@"SET NOW_TMP=%time:~0,2%");
            w.WriteLine(@"SET NOW=%date:~0,4%%date:~5,2%%date:~8,2%_%NOW_TMP: =0%%time:~3,2%%time:~6,2%");
            w.WriteLine();
            w.WriteLine();

            string[] files = Directory.GetFiles(filesReleaseDir, "*", SearchOption.AllDirectories);

            string cddir = "CD";

            /*string.Format("CD-v{0}.{1}-{2}-{3}-{4:D4}.{5:D2}.{6:D2}",
             * version / 100, version % 100, build, name,
             * date.Year, date.Month, date.Day);*/

            StringWriter txt = new StringWriter();

            foreach (string filename in files)
            {
                string file = filename;

                BuildSoftware s = new BuildSoftware(file);

                // Software\Windows\PacketiX VPN Server 4.0\32bit (Intel x86)\filename.exe
                string cpustr  = string.Format("{0} - {1}", CPUBitsUtil.CPUBitsToString(s.Cpu.Bits), s.Cpu.Title).Replace("/", "or");
                string cpustr2 = cpustr;

                if (s.Cpu == CpuList.intel)
                {
                    cpustr2 = "";
                    cpustr  = "Intel";
                }

                string tmp = string.Format(@"{1}\{2}\{3}\{5}{4}",
                                           0,
                                           s.Os.Title,
                                           BuildHelper.GetSoftwareTitle(s.Software),
                                           cpustr2,
                                           Path.GetFileName(file),
                                           ""
                                           );

                tmp = Str.ReplaceStr(tmp, "\\\\", "\\");

                w.WriteLine("mkdir \"{1}\\{0}\"", Path.GetDirectoryName(tmp), cddir);
                w.WriteLine("copy /b /y \"{2}\\{0}\" \"{3}\\{1}\"", IO.GetRelativeFileName(file, filesReleaseDir), tmp, baseName, cddir);
                w.WriteLine();

                string txt_filename = tmp;
                txt_filename = Str.ReplaceStr(txt_filename, "\\", "/");

                string txt_description = BuildHelper.GetSoftwareTitle(s.Software);

                string txt_products = BuildHelper.GetSoftwareProductList(s.Software);

                string txt_os = s.Os.Title;

                string txt_cpu = s.Cpu.Title;
                if (s.Cpu.Bits != CPUBits.Both)
                {
                    txt_cpu += " (" + CPUBitsUtil.CPUBitsToString(s.Cpu.Bits) + ")";
                }
                else
                {
                    txt_cpu += " (x86 and x64)";
                }

                string txt_version = BuildHelper.VersionIntToString(version);

                string txt_build = build.ToString();

                string txt_verstr = name;

                string txt_date = Str.DateTimeToStrShortWithMilliSecs(date);

                string txt_lang = "English, Japanese, Simplified Chinese";

                string txt_category = "PacketiX VPN (Commercial)";

#if BU_SOFTETHER
                txt_category = "SoftEther VPN (Freeware)";
#endif

                txt.WriteLine("FILENAME\t" + txt_filename);
                txt.WriteLine("DESCRIPTION\t" + txt_description);
                txt.WriteLine("CATEGORY\t" + txt_category);
                txt.WriteLine("PRODUCT\t" + txt_products);
                txt.WriteLine("OS\t" + txt_os);
                txt.WriteLine("OSLIST\t" + s.Os.OSSimpleList);
                txt.WriteLine("CPU\t" + txt_cpu);
                txt.WriteLine("VERSION\t" + txt_version);
                txt.WriteLine("BUILD\t" + txt_build);
                txt.WriteLine("VERSTR\t" + txt_verstr);
                txt.WriteLine("DATE\t" + txt_date);
                txt.WriteLine("LANGUAGE\t" + txt_lang);
                txt.WriteLine("*");
                txt.WriteLine();
            }

#if BU_OSS
            Con.WriteLine("Installer packages are built on '{0}'. Enjoy it !!", publicDir);

            return(0);
#endif  // BU_OSS

            /*
             * w.WriteLine("mkdir \"{0}\\autorun\"", cddir);
             * w.WriteLine("copy /b /y autorun\\autorun.ico \"{0}\\autorun\"", cddir);
             * w.WriteLine("copy /b /y autorun\\autorun.exe \"{0}\\autorun\"", cddir);
             * w.WriteLine("copy /b /y autorun\\autorun.inf \"{0}\\autorun.inf\"", cddir);
             * */

            string zipFileName = string.Format("VPN-CD-v{0}.{1:D2}-{2}-{3}-{4:D4}.{5:D2}.{6:D2}.zip",
                                               version / 100, version % 100, build, name,
                                               date.Year, date.Month, date.Day);
            w.WriteLine("del {0}", zipFileName);
            w.WriteLine("CD {0}", cddir);
            w.WriteLine("zip -r -0 ../{0} *", zipFileName);
            w.WriteLine("cd ..");
            w.WriteLine("move {0} CD\\", zipFileName);
            w.WriteLine("rename CD {0}-tree", baseName);
            w.WriteLine();

            w.Close();

            // Copy of fastcopy
            string fastcopy_dest = Path.Combine(destDirName, @"Private\fastcopy_bin");
            IO.MakeDirIfNotExists(fastcopy_dest);
            File.Copy(Path.Combine(Paths.UtilityDirName, "FastCopy.exe"), Path.Combine(fastcopy_dest, "FastCopy.exe"), true);
            File.Copy(Path.Combine(Paths.UtilityDirName, "FastEx64.dll"), Path.Combine(fastcopy_dest, "FastEx64.dll"), true);
            File.Copy(Path.Combine(Paths.UtilityDirName, "FastExt1.dll"), Path.Combine(fastcopy_dest, "FastExt1.dll"), true);

            string fastcopy_exe = @"..\Private\fastcopy_bin\FastCopy.exe";

            // Create a upload batch
            string uploadBatchFileName = Path.Combine(publicDir, "UploadNow.cmd");
#if !BU_OSS
            w = new StreamWriter(uploadBatchFileName);
#endif  // !BU_OSS

            string folder_name = "packetix";
#if BU_SOFTETHER
            folder_name = "softether";
#endif
            w.WriteLine(@"mkdir \\download\FILES\{1}\{0}-tree", baseName, folder_name);
            w.WriteLine(@"{0} /cmd=force_copy /exclude={3} /auto_close /force_start /estimate /open_window /error_stop=TRUE /bufsize=128 /disk_mode=diff /speed=full /verify {1}-tree /to=\\download\FILES\{2}\{1}-tree", fastcopy_exe, baseName, folder_name,
                        "\"*files.txt*\"");

            w.WriteLine();

            /*
             * w.WriteLine(@"mkdir \\downloadjp\FILES\{1}\{0}-tree", baseName, folder_name);
             * w.WriteLine(@"{0} /cmd=force_copy /exclude={3} /auto_close /force_start /estimate /open_window /error_stop=TRUE /bufsize=128 /disk_mode=diff /speed=full /verify {1}-tree /to=\\downloadjp\FILES\{2}\{1}-tree", fastcopy_exe, baseName, folder_name,
             *      "\"*files.txt*\"");
             *
             * w.WriteLine();*/

            w.WriteLine(@"copy /y /b {0}-tree\files.txt \\download\FILES\{1}\{0}-tree\files.txt", baseName, folder_name);
            //w.WriteLine(@"copy /y /b {0}-tree\files.txt \\downloadjp\FILES\{1}\{0}-tree\files.txt", baseName, folder_name);


            w.WriteLine();
            w.WriteLine(@"pause");
            w.WriteLine();

            w.Close();


            txt.WriteLine("FILENAME\t" + zipFileName);
#if BU_SOFTETHER
            txt.WriteLine("DESCRIPTION\t" + "ZIP CD-ROM Image Package of SoftEther VPN (for Admins)");
            txt.WriteLine("CATEGORY\t" + "SoftEther VPN (Freeware)");
            txt.WriteLine("PRODUCT\t" + "ZIP CD-ROM Image Package of SoftEther VPN");
#else   // BU_SOFTETHER
            txt.WriteLine("DESCRIPTION\t" + "ZIP CD-ROM Image Package of PacketiX VPN (for Admins)");
            txt.WriteLine("CATEGORY\t" + "PacketiX VPN (Commercial)");
            txt.WriteLine("PRODUCT\t" + "ZIP CD-ROM Image Package of PacketiX VPN");
#endif  // BU_SOFTETHER
            txt.WriteLine("OS\t" + "Any");
            txt.WriteLine("OSLIST\t" + "Any");
            txt.WriteLine("CPU\t" + "CD-ROM");
            txt.WriteLine("VERSION\t" + BuildHelper.VersionIntToString(version));
            txt.WriteLine("BUILD\t" + build.ToString());
            txt.WriteLine("VERSTR\t" + name);
            txt.WriteLine("DATE\t" + Str.DateTimeToStrShortWithMilliSecs(date));
            txt.WriteLine("LANGUAGE\t" + "English, Japanese, Simplified Chinese");
            txt.WriteLine("*");
            txt.WriteLine();

            IO.MakeDirIfNotExists(Path.Combine(publicDir, cddir));
            File.WriteAllText(Path.Combine(Path.Combine(publicDir, cddir), "files.txt"), txt.ToString(), Str.Utf8Encoding);

            // Execution of batch file
            string old_cd = Environment.CurrentDirectory;

            try
            {
                Environment.CurrentDirectory = Path.GetDirectoryName(batchFileName);
            }
            catch
            {
            }

            Win32BuildUtil.ExecCommand(Paths.CmdFileName, string.Format("/C \"{0}\"", batchFileName));

            try
            {
                Environment.CurrentDirectory = old_cd;
            }
            catch
            {
            }

            Con.WriteLine();
            Con.WriteLine("'{0}' に出力されました。", destDirName);

            return(0);
        }