private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs) { var directoryInfo1 = new DirectoryInfo(sourceDirName); DirectoryInfo[] directories; try { directories = directoryInfo1.GetDirectories(); if (!directoryInfo1.Exists) { throw new DirectoryNotFoundException("Source directory does not exist or could not be found: " + sourceDirName); } } catch (Exception ex) { throw new DirectoryNotFoundException("Source directory does not exist or could not be found: " + sourceDirName, ex); } if (!Directory.Exists(destDirName)) { Directory.CreateDirectory(destDirName); } try { new DirectoryInfo(destDirName).Attributes &= ~FileAttributes.ReadOnly; } catch (Exception ex) { } foreach (FileInfo file in directoryInfo1.GetFiles()) { try { file.Attributes &= ~FileAttributes.ReadOnly; } catch (Exception ex) { } try { var destFileName = Path.Combine(destDirName, file.Name); file.CopyTo(destFileName, true); } catch (Exception ex) { } } if (!copySubDirs) { return; } foreach (DirectoryInfo directoryInfo2 in directories) { var destDirName1 = Path.Combine(destDirName, directoryInfo2.Name); SplashFormFirstRun.DirectoryCopy(directoryInfo2.FullName, destDirName1, copySubDirs); } }
private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); timer1.Enabled = false; var publicDataFolder = Paths.PublicDataFolder; SplashFormFirstRun.DirectoryCopy(Path.Combine(Paths.ResourceFolder, "Data"), Path.Combine(publicDataFolder, "Data"), true); SplashFormFirstRun.DirectoryCopy(Path.Combine(Paths.ResourceFolder, "MyLibrary"), Path.Combine(publicDataFolder, "MyLibrary"), true); SplashFormFirstRun.DirectoryCopy(Path.Combine(Paths.ResourceFolder, "Utility"), Path.Combine(publicDataFolder, "Utility"), true); SplashFormFirstRun.DirectoryCopy(Path.Combine(Paths.ResourceFolder, "Working"), Path.Combine(publicDataFolder, "Working"), true); var binaryWriter = new BinaryWriter(new FileStream(Path.Combine(publicDataFolder, "version.info"), FileMode.Create)); binaryWriter.Write(M3D.Spooling.Version.Client_Version.major); binaryWriter.Write(M3D.Spooling.Version.Client_Version.minor); binaryWriter.Write(M3D.Spooling.Version.Client_Version.build); binaryWriter.Write(M3D.Spooling.Version.Client_Version.hotfix); binaryWriter.Close(); Hide(); Close(); }