/// <summary> /// <see cref="DirectoryStructure"/> クラスの新しいインスタンスを初期化します。 /// </summary> /// <param name="configuration">設定を取得する <see cref="XmlConfiguration"/> オブジェクト。</param> public DirectoryStructure(XmlConfiguration configuration) { this.BaseDirectory = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory); Environment.SetEnvironmentVariable( "BaseDir", this.BaseDirectory.FullName, EnvironmentVariableTarget.Process ); Environment.SetEnvironmentVariable( "DataDir", new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)) .CreateSubdirectory("MetaTweet") .FullName, EnvironmentVariableTarget.Process ); this.BinaryDirectory = this.GetDirectory(configuration.ResolveValue<String>("binary")); this.PrivilegedBinaryDirectory = this.GetDirectory(configuration.ResolveValue<String>("privbinary")); this.CacheDirectory = this.GetDirectory(configuration.ResolveValue<String>("cache")); this.ConfigDirectory =this.GetDirectory(configuration.ResolveValue<String>("config")); this.LibraryDirectory = this.GetDirectory(configuration.ResolveValue<String>("library")); this.LogDirectory = this.GetDirectory(configuration.ResolveValue<String>("log")); this.ModuleDirectory = this.GetDirectory(configuration.ResolveValue<String>("module")); this.RuntimeDirectory = this.GetDirectory(configuration.ResolveValue<String>("runtime")); this.TempDirectory = this.GetDirectory(configuration.ResolveValue<String>("temp")); this.BaseDirectoryWatcher = new FileSystemWatcher(this.BaseDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.BinaryDirectoryWatcher = new FileSystemWatcher(this.BinaryDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.PrivilegedBinaryDirectoryWatcher = new FileSystemWatcher(this.PrivilegedBinaryDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.CacheDirectoryWatcher = new FileSystemWatcher(this.CacheDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.ConfigDirectoryWatcher = new FileSystemWatcher(this.ConfigDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.LibraryDirectoryWatcher = new FileSystemWatcher(this.LibraryDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.LogDirectoryWatcher = new FileSystemWatcher(this.LogDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.ModuleDirectoryWatcher = new FileSystemWatcher(this.ModuleDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.RuntimeDirectoryWatcher = new FileSystemWatcher(this.RuntimeDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; this.TempDirectoryWatcher = new FileSystemWatcher(this.TempDirectory.FullName) { EnableRaisingEvents = true, IncludeSubdirectories = true, }; }