static int BuildWin32(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { new ConsoleParam("[yes|no]", ConsoleService.Prompt, "Increments build number (y/n) ? ", ConsoleService.EvalNotEmpty, null), new ConsoleParam("NORMALIZESRC", ConsoleService.Prompt, "Normalizes source codes (y/n) ? ", ConsoleService.EvalNotEmpty, null) }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); if (vl.DefaultParam.BoolValue) { Win32BuildUtil.IncrementBuildNumber(); } if (vl.DefaultParam.BoolValue || vl["NORMALIZESRC"].BoolValue) { Win32BuildUtil.NormalizeBuildInfo(); } Paths.DeleteAllReleaseTarGz(); Paths.DeleteAllReleaseExe(); Paths.DeleteAllReleaseManuals(); Paths.DeleteAllReleaseAdminKits(); Win32BuildUtil.BuildMain(); Win32BuildUtil.SignAllBinaryFiles(); HamCoreBuildUtil.BuildHamcore(); Win32BuildUtil.CopyDebugSnapshot(); return(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; } }
// Build by cross-compiler public virtual void BuildWithCrossCompiler(string baseOutputDir) { // Create a batch file string outDir = Path.Combine(baseOutputDir, this.CrossLibName); string outSrcDir = Path.Combine(outDir, "src"); try { string xcDir = Path.Combine(Path.Combine(Paths.CrossCompilerBaseDir, this.CrossCompilerName), "bin"); if (Directory.Exists(xcDir) == false) { throw new ApplicationException(string.Format("dir '{0}' not found.", xcDir)); } string batFileName = Path.Combine(outSrcDir, "cross_build.cmd"); StreamWriter w = new StreamWriter(batFileName, false, Str.ShiftJisEncoding); w.WriteLine("SET PATH={0};%PATH%", xcDir); w.WriteLine(); w.WriteLine(outSrcDir.Substring(0, 2)); w.WriteLine("CD {0}", outSrcDir); w.WriteLine(); w.WriteLine("make clean"); w.WriteLine("make"); w.WriteLine(); w.WriteLine("EXIT /B %ERRORLEVEL%"); w.Close(); Semaphore sem = new Semaphore(BuildConfig.NumMultipleCompileTasks, BuildConfig.NumMultipleCompileTasks, "vpn_build_cross"); Con.WriteLine("Waiting for Semaphore..."); sem.WaitOne(); Con.WriteLine("Done."); try { Win32BuildUtil.ExecCommand(Paths.CmdFileName, string.Format("/C \"{0}\"", batFileName)); } finally { sem.Release(); } } catch { string[] files = Directory.GetFiles(Path.Combine(outSrcDir, "code"), "*.a", SearchOption.AllDirectories); foreach (string file in files) { try { File.Delete(file); } catch { } } } }
static int SignAll(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); Win32BuildUtil.SignAllBinaryFiles(); return(0); }
static int IncrementBuildNumber(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); Win32BuildUtil.IncrementBuildNumber(); return(0); }
static int All(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { #if !BU_SOFTETHER new ConsoleParam("[yes|no]", ConsoleService.Prompt, "Increments build number (y/n) ? ", ConsoleService.EvalNotEmpty, null), new ConsoleParam("SEVPN", ConsoleService.Prompt, "Build SoftEther VPN automatically after PacketiX VPN Build (y/n) ? ", ConsoleService.EvalNotEmpty, null), #else new ConsoleParam("[yes|no]"), #endif new ConsoleParam("IGNOREERROR"), new ConsoleParam("DEBUG"), new ConsoleParam("SERIAL"), }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); DateTime start = Time.NowDateTime; Win32BuildUtil.ExecCommand(Env.ExeFileName, string.Format("/CMD:BuildWin32 {0} /NORMALIZESRC:{1}", vl["[yes|no]"].BoolValue ? "yes" : "no", "yes")); Win32BuildUtil.ExecCommand(Env.ExeFileName, string.Format("/CMD:ReleaseWin32 all /IGNOREERROR:{0} /SERIAL:{1}", vl["IGNOREERROR"].BoolValue ? "yes" : "no", vl["SERIAL"].BoolValue ? "yes" : "no")); #if !BU_OSS Win32BuildUtil.ExecCommand(Env.ExeFileName, string.Format("/CMD:ReleaseUnix all /IGNOREERROR:{0} /DEBUG:{1} /SERIAL:{2}", vl["IGNOREERROR"].BoolValue ? "yes" : "no", vl["DEBUG"].BoolValue ? "yes" : "no", vl["SERIAL"].BoolValue ? "yes" : "no")); #endif Win32BuildUtil.ExecCommand(Env.ExeFileName, string.Format("/CMD:CopyRelease")); #if !BU_SOFTETHER Win32BuildUtil.ExecCommand(Env.ExeFileName, string.Format("/CMD:MakeOpenSource")); Win32BuildUtil.ExecCommand(Env.ExeFileName, string.Format("/CMD:MakeSoftEtherDir")); if (vl["SEVPN"].BoolValue) { // Build SEVPN Win32BuildUtil.ExecCommand(Paths.CmdFileName, string.Format("/C \"{0}\"", Path.Combine(Paths.SoftEtherBuildDir, @"Main\BuildAll.cmd"))); } #endif DateTime end = Time.NowDateTime; Con.WriteLine("Taken time: {0}.", (end - start)); return(0); }
static int SignSeLowInfFiles(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { new ConsoleParam("[cpu]", ConsoleService.Prompt, "x86 / x64: ", ConsoleService.EvalNotEmpty, null) }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); #if !BU_OSS Win32BuildUtil.SignSeLowInfFiles(vl.DefaultParam.StrValue); #endif return(0); }
static int GenerateVersionResource(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { new ConsoleParam("[targetFileName]", ConsoleService.Prompt, "Target Filename: ", ConsoleService.EvalNotEmpty, null), new ConsoleParam("OUT", ConsoleService.Prompt, "Dst Filename: ", ConsoleService.EvalNotEmpty, null), new ConsoleParam("RC"), }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); string targetFilename = vl.DefaultParam.StrValue; string outFilename = vl["OUT"].StrValue; Win32BuildUtil.GenerateVersionInfoResource(targetFilename, outFilename, vl["RC"].StrValue); return(0); }
static int GenerateVpnWebOcxCab(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { new ConsoleParam("[src]", ConsoleService.Prompt, "Src Filename: ", ConsoleService.EvalNotEmpty, null), new ConsoleParam("DEST", ConsoleService.Prompt, "Dst Filename: ", ConsoleService.EvalNotEmpty, null), }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); #if !BU_OSS string destFileName = vl["DEST"].StrValue; string srcFileName = vl.DefaultParam.StrValue; Win32BuildUtil.GenerateVpnWebOcxCab(destFileName, srcFileName); #endif return(0); }
// Build the installer void buildInstaller() { string outFileName = Path.Combine(Paths.ReleaseDir, this.OutputFileName); string vpnsetup_exe = Path.Combine(Paths.BinDirName, "vpnsetup.exe"); try { File.Delete(outFileName); } catch { } Win32BuildUtil.ExecCommand(vpnsetup_exe, string.Format("/SFXMODE:{1} /SFXOUT:\"{0}\"", outFileName, Software.ToString())); CodeSign.SignFile(outFileName, outFileName, "VPN Software", false); }
// Generate vpnweb.ocx public static void GenerateVpnWebOcxCab(string dstFileName, string ocxFileName) { int build, version; string name; DateTime date; ReadBuildInfoFromTextFile(out build, out version, out name, out date); string cabVer = string.Format("{0},{1},0,{2}", version / 100, version % 100, build); string cabFileName = IO.CreateTempFileNameByExt(".cab"); Mutex m = new Mutex(false, "cabtmp_mutex"); m.WaitOne(); try { // Building the cab string cabTmpDir = Path.Combine(Paths.TmpDirName, "cabtmp"); IO.MakeDir(cabTmpDir); IO.DeleteFilesAndSubDirsInDir(cabTmpDir); File.Copy(Path.Combine(Paths.BinDirName, ocxFileName), Path.Combine(cabTmpDir, "vpnweb.ocx")); string infText = File.ReadAllText(Path.Combine(Path.Combine(Paths.BaseDirName, @"BuildFiles\OcxCabInf"), "vpnweb.inf")); infText = Str.ReplaceStr(infText, "$CAB_VERSION$", cabVer); File.WriteAllText(Path.Combine(cabTmpDir, "vpnweb.inf"), infText); Win32BuildUtil.ExecCommand(Path.Combine(Paths.BaseDirName, @"BuildFiles\Utility\cabarc.exe"), string.Format(@"-s 6144 n {0}\vpnweb.cab {0}\vpnweb.ocx {0}\vpnweb.inf", cabTmpDir)); File.Copy(Path.Combine(cabTmpDir, "vpnweb.cab"), cabFileName, true); } finally { m.ReleaseMutex(); } CodeSign.SignFile(cabFileName, cabFileName, "VPN Software", false); File.Copy(cabFileName, dstFileName, true); }
public static void Test() { Win32BuildUtil.MakeDriverPackage(); }
public static void SetManifest(string exe, string manifestName) { Mutex x = new Mutex(false, MutexName); x.WaitOne(); try { // Manifest file name string filename = Path.Combine(Paths.ManifestsDir, manifestName); if (File.Exists(filename) == false) { throw new FileNotFoundException(filename); } FileInfo fi = new FileInfo(exe); // Copy exe file to a temporary directory string exeTmp = IO.CreateTempFileNameByExt(".exe"); IO.FileCopy(exe, exeTmp); // Create a batch file string batFileName = Path.Combine(Paths.TmpDirName, "exec_mt.cmd"); StreamWriter bat = new StreamWriter(batFileName, false, Str.ShiftJisEncoding); bat.WriteLine("call \"{0}\"", Paths.VisualStudioVCBatchFileName); bat.WriteLine("echo on"); bat.WriteLine("mt.exe -manifest \"{0}\" -outputresource:\"{1}\";1", filename, exeTmp); bat.WriteLine("EXIT /B %ERRORLEVEL%"); bat.Close(); Exception ex = null; int i; // Repeated 20 times in order to avoid locking the file by the anti-virus software for (i = 0; i < 20; i++) { try { // Execute Win32BuildUtil.ExecCommand(Paths.CmdFileName, string.Format("/C \"{0}\"", batFileName), true); ex = null; break; } catch (Exception ex2) { ex = ex2; } ThreadObj.Sleep(Secure.Rand31i() % 50); } if (ex != null) { throw new ApplicationException("mt.exe Manifest Processing for '" + exe + "' Failed."); } // Revert to the original file IO.FileCopy(exeTmp, exe); // Restore the date and time File.SetCreationTime(exe, fi.CreationTime); File.SetLastAccessTime(exe, fi.LastAccessTime); File.SetLastWriteTime(exe, fi.LastWriteTime); } finally { x.ReleaseMutex(); } }
static int ReleaseWin32(ConsoleService c, string cmdName, string str) { ConsoleParam[] args = { new ConsoleParam("[id]"), new ConsoleParam("IGNOREERROR"), new ConsoleParam("SERIAL"), }; ConsoleParamValueList vl = c.ParseCommandList(cmdName, str, args); bool serial = vl["SERIAL"].BoolValue; int version, build; string name; DateTime date; Win32BuildUtil.ReadBuildInfoFromTextFile(out build, out version, out name, out date); BuildSoftware[] softs = BuildSoftwareList.List; if (Str.IsEmptyStr(vl.DefaultParam.StrValue)) { Con.WriteLine("IDs:"); foreach (BuildSoftware soft in softs) { if (soft.Os.IsWindows) { soft.SetBuildNumberVersionName(build, version, name, date); Con.WriteLine(" {0}", soft.IDString); Con.WriteLine(" - \"{0}\"", soft.OutputFileName); } } } else { string key = vl.DefaultParam.StrValue; bool all = false; if ("all".StartsWith(key, StringComparison.InvariantCultureIgnoreCase)) { all = true; } if ("clean".StartsWith(key, StringComparison.InvariantCultureIgnoreCase)) { // Delete the release directory Paths.DeleteAllReleaseExe(); Con.WriteLine("Clean completed."); return(0); } List <BuildSoftware> o = new List <BuildSoftware>(); foreach (BuildSoftware soft in softs) { soft.SetBuildNumberVersionName(build, version, name, date); if (soft.Os.IsWindows) { if (all || soft.IDString.IndexOf(key, StringComparison.InvariantCultureIgnoreCase) != -1) { o.Add(soft); } } } if (o.Count == 0) { throw new ApplicationException(string.Format("Software ID '{0}' not found.", key)); } else { if (all) { // Delete the release directory Paths.DeleteAllReleaseExe(); } else { IO.MakeDir(Paths.ReleaseDir); } if (serial) { // Build in series int i; for (i = 0; i < o.Count; i++) { Con.WriteLine("{0} / {1}: Executing for '{2}'...", i + 1, o.Count, o[i].IDString); BuildHelper.BuildMain(o[i], false); } } else if (o.Count == 1) { // To build BuildHelper.BuildMain(o[0], false); } else { // Make a child process build Process[] procs = new Process[o.Count]; int i; for (i = 0; i < o.Count; i++) { Con.WriteLine("{0} / {1}: Executing for '{2}'...", i + 1, o.Count, o[i].IDString); procs[i] = Kernel.Run(Env.ExeFileName, string.Format("/PAUSEIFERROR:{1} /CMD:ReleaseWin32 {0}", o[i].IDString, vl["IGNOREERROR"].BoolValue ? "no" : "yes")); } Con.WriteLine("Waiting child processes..."); int numError = 0; for (i = 0; i < o.Count; i++) { procs[i].WaitForExit(); bool ok = procs[i].ExitCode == 0; if (ok == false) { numError++; } Con.WriteLine("{0} / {1} ({2}):", i + 1, o.Count, o[i].IDString); Con.WriteLine(" {0}", ok ? "Success" : "* Error *"); } Con.WriteLine(); if (numError != 0) { throw new ApplicationException(string.Format("{0} Errors.", numError)); } Con.WriteLine("No Errors."); } } } return(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); }
public static void SetManifest(string exe, string manifestName) { Mutex x = new Mutex(false, MutexName); x.WaitOne(); try { // Manifest file name string filename = Path.Combine(Paths.ManifestsDir, manifestName); if (File.Exists(filename) == false) { throw new FileNotFoundException(filename); } FileInfo fi = new FileInfo(exe); // Copy exe file to a temporary directory string exeTmp = IO.CreateTempFileNameByExt(".exe"); IO.FileCopy(exe, exeTmp); string mtFileName = Path.Combine(Paths.MicrosoftSDKBinDir, "mt.exe"); string mtArgs = string.Format("-nologo -manifest \"{0}\" -outputresource:\"{1}\";1", filename, exeTmp); Exception ex = null; int i; // Repeated 20 times in order to avoid locking the file by the anti-virus software for (i = 0; i < 20; i++) { try { // Execute Win32BuildUtil.ExecCommand(mtFileName, mtArgs, false, true); ex = null; break; } catch (Exception ex2) { ex = ex2; } ThreadObj.Sleep(Secure.Rand31i() % 50); } if (ex != null) { throw new ApplicationException("mt.exe Manifest Processing for '" + exe + "' Failed."); } ex = null; // Revert to the original file for (i = 0; i < 20; i++) { try { IO.FileCopy(exeTmp, exe); ex = null; break; } catch (Exception ex2) { ex = ex2; } ThreadObj.Sleep(Secure.Rand31i() % 50); } // Restore the date and time File.SetCreationTime(exe, fi.CreationTime); File.SetLastAccessTime(exe, fi.LastAccessTime); File.SetLastWriteTime(exe, fi.LastWriteTime); } finally { x.ReleaseMutex(); } }