public void Setup() { _source = @"c:\temp\nonexistant.txt"; _destination = @"c:\temp\nonexistant2.txt"; _artifact = new File(_source); _fileSystemWrapper = MockRepository.GenerateStub<IFileSystemWrapper>(); _copyEngine = new CopyFile(_fileSystemWrapper, _artifact); }
/// <summary> /// Schedules a pip to produce a file at the specified path under the given output directory. /// </summary> private static bool TryScheduleRewrite( TestEnv env, FileArtifact source, FileArtifact target, out FileArtifact written) { Contract.Requires(env != null); Contract.Requires(source.IsValid); Contract.Requires(target.IsValid); written = target.CreateNextWrittenVersion(); var pip = new CopyFile( source, written, ReadOnlyArray <StringId> .Empty, env.CreatePipProvenance(StringId.Invalid)); return(env.PipGraph.AddCopyFile(pip, PipId.Invalid)); }
void VisitFile(CopyFile f) { if (f.Type == null || !f.Flags.HasFlag(CopyFileFlags.ProcessFile)) { return; } var src = f.SourceName.String.IsValidPath() && File.Exists(Path.Combine(Path.GetDirectoryName(f.SourceName.Source.FullPath), f.SourceName.String)) ? f.SourceName.String : Environment.ExpandSingleLine(f.SourceName.Source, f.SourceName.String).NativeToUnix(); if (Disk.GetFullPath( f.SourceName.Source, ref src, PathFlags.AllowAbsolutePath)) { Environment.Expand(new Source(f.SourceName.Source.Package, src, 1, 1), f.Preprocess(File.ReadAllText(src).Replace("\r\n", "\n"))); } }
public void TestExecuteMultipleFiles() { CopyFile cf = new CopyFile(); TestUtility.CreateFile(TestUtility.TempDir + @"01.testfile"); TestUtility.CreateFile(TestUtility.TempDir + @"02.testfile"); Directory.CreateDirectory(TestUtility.TempDir + @"testfiles"); cf.Source = TestUtility.TempDir + @"*.testfile"; cf.Destination = TestUtility.TempDir + @"testfiles"; cf.Execute(); Assert.IsTrue(File.Exists(TestUtility.TempDir + @"testfiles\01.testfile")); Assert.IsTrue(File.Exists(TestUtility.TempDir + @"testfiles\02.testfile")); // cleanup File.Delete(TestUtility.TempDir + @"01.testfile"); File.Delete(TestUtility.TempDir + @"02.testfile"); Directory.Delete(TestUtility.TempDir + @"testfiles", true); }
/// <summary> /// Gets the outputs produced by a pip and calls an action /// </summary> protected static void ForEachOutput <TState>(TState state, Pip pip, Action <TState, FileOrDirectoryArtifact> outputAction) { switch (pip.PipType) { case PipType.CopyFile: CopyFile copyFile = (CopyFile)pip; outputAction(state, FileOrDirectoryArtifact.Create(copyFile.Destination)); break; case PipType.Process: Process process = (Process)pip; foreach (var output in process.FileOutputs) { outputAction(state, FileOrDirectoryArtifact.Create(output.ToFileArtifact())); } foreach (var output in process.DirectoryOutputs) { outputAction(state, FileOrDirectoryArtifact.Create(output)); } break; case PipType.WriteFile: WriteFile writeFile = (WriteFile)pip; outputAction(state, FileOrDirectoryArtifact.Create(writeFile.Destination)); break; case PipType.SealDirectory: SealDirectory sealDirectory = (SealDirectory)pip; outputAction(state, FileOrDirectoryArtifact.Create(sealDirectory.Directory)); break; case PipType.Ipc: IpcPip ipcPip = (IpcPip)pip; outputAction(state, FileOrDirectoryArtifact.Create(ipcPip.OutputFile)); break; } }
public void generateLocalVersion(String DbPath) { CopyFile copyFile = new CopyFile(); String DbName = GetFileName.getFileName(DbPath); OleDbDataReader reader = CreateDb.DbConnect(DbPath); String path = versionFile; System.IO.Directory.CreateDirectory(path + "\\" + "本地版本" + Path.GetFileNameWithoutExtension(DbName)); DirectoryInfo dir = new DirectoryInfo(path + "\\" + "本地版本" + Path.GetFileNameWithoutExtension(DbName)); dir.Create(); while (reader.Read()) { String tempStr = (String)reader["path"]; String targetDir = dir + "\\" + Path.GetFileName(tempStr); copyFile.copyFile(tempStr, targetDir); } copyFile.copyFile(DbPath + "\\" + DbName, dir + "\\" + DbName); MessageBox.Show("生成版本成功", "提示", MessageBoxButton.OK); }
//生成其他版本 public void generateOtherVersion() { Microsoft.Win32.OpenFileDialog openFileDialog = new Microsoft.Win32.OpenFileDialog(); openFileDialog.RestoreDirectory = true; openFileDialog.Filter = "AllFiles|*.*"; openFileDialog.InitialDirectory = @"D:\study\vsproject\TeamProjectDevelopment\TeamProjectDevelopment\TeamProjectDevelopment\bin"; openFileDialog.ShowDialog(); String versionFilePath = openFileDialog.FileName; try { CopyFile copyFile = new CopyFile(); String DbName = Path.GetFileName(versionFilePath); String conString = databaseCon + versionFilePath; String sql = "select * from config1"; OleDbConnection oleDbConnection = new OleDbConnection(conString); OleDbCommand command = new OleDbCommand(sql, oleDbConnection); oleDbConnection.Open(); OleDbDataReader reader = command.ExecuteReader(); String path = versionFile; System.IO.Directory.CreateDirectory(path + "\\" + "版本" + Path.GetFileNameWithoutExtension(versionFilePath)); DirectoryInfo dir = new DirectoryInfo(path + "\\" + "版本" + Path.GetFileNameWithoutExtension(versionFilePath)); dir.Create(); while (reader.Read()) { String tempStr = (String)reader["path"]; String targetDir = dir + "\\" + Path.GetFileName(tempStr); copyFile.copyFile(tempStr, targetDir); } copyFile.copyFile(versionFilePath, dir + "\\" + DbName); oleDbConnection.Close(); MessageBox.Show("生成版本成功", "提示", MessageBoxButton.OK); } catch { } }
public void update(Window oldWindow) { //判断文件是否存在 CopyFile copyFile = new CopyFile(); String serverDbName = GetFileName.getFileName(serverPath); OleDbDataReader reader = CreateDb.DbConnect(serverPath); while (reader.Read()) { String tempStr = (String)reader["fileName"]; String originFile = serverPath + "\\" + tempStr; String updateMethod = (String)reader["updateMethod"]; if (updateMethod.Equals("删除") && File.Exists(localPath + "\\" + tempStr)) { File.Delete(localPath + "\\" + tempStr); } else { copyFile.copyFile(originFile, localPath + "\\" + tempStr); } } if (reader != null) { reader.Close(); } //最后复制服务器配置文件到本地,并删除原来的配置文件 String localDbName = GetFileName.getFileName(localPath); copyFile.copyFile(serverPath + "\\" + serverDbName, localPath + "\\" + localDbName); /* * if (serverDbName != localDbName) * File.Delete(localPath + "\\" + localDbName); */ SuccessTips(oldWindow); }
public void TestPassingAndFailingPips() { var existantCopyFileSrc = CreateSourceFile(); var existantCopyFileDest = CreateOutputFileArtifact(); File.WriteAllText(existantCopyFileSrc.Path.ToString(Context.PathTable), "copy file test"); var failingCopyFile = new CopyFile(FileArtifact.CreateSourceFile(CreateUniqueSourcePath(SourceRootPrefix)), CreateOutputFileArtifact(), ReadOnlyArray <StringId> .Empty, PipProvenance.CreateDummy(Context)); var passingCopyFile = CreateCopyFile(existantCopyFileSrc, existantCopyFileDest); PipGraphBuilder.AddCopyFile(failingCopyFile); PipGraphBuilder.AddCopyFile(passingCopyFile); var schedulerResult = RunScheduler().AssertFailure(); var logFolder = Path.Combine(schedulerResult.Config.Logging.LogsDirectory.ToString(Context.PathTable), "FailedPips"); var failingLogFile = Path.Combine(logFolder, $"{failingCopyFile.FormattedSemiStableHash}.json"); var passingLogFile = Path.Combine(logFolder, $"{passingCopyFile.FormattedSemiStableHash}.json"); SetExpectedFailures(1, 0); // One error logged for the failing pip AssertErrorCount(); Assert.True(File.Exists(failingLogFile)); Assert.False(File.Exists(passingLogFile)); }
void WriteCopyFile(CopyFile f) { var src = f.SourceName.String.IsValidPath() && File.Exists(Path.Combine(Path.GetDirectoryName(f.SourceName.Source.FullPath), f.SourceName.String)) ? f.SourceName.String : _env.ExpandSingleLine(f.SourceName.Source, f.SourceName.String).NativeToUnix(); var dst = _env.Combine(GetTargetName(f.SourceName, f.TargetName, f.Type)); if (!_disk.GetFullPath( f.SourceName.Source, ref src, PathFlags.AllowAbsolutePath | (f.Flags.HasFlag(CopyFileFlags.IsDirectory) ? PathFlags.IsDirectory : 0)) || f.Flags.HasFlag(CopyFileFlags.NoOverwrite) && File.Exists(dst)) { return; } if (f.Flags.HasFlag(CopyFileFlags.ProcessFile)) { using (var w = _disk.CreateBufferedText(dst)) w.Write(_env.Expand(new Source(f.SourceName.Source.Package, src, 1, 1), f.Preprocess(File.ReadAllText(src).Replace("\r\n", "\n")))); } else if (f.Flags.HasFlag(CopyFileFlags.IsDirectory)) { _disk.CopyDirectory(src, dst); } else { _disk.CopyFile(src, dst); } if (f.Flags.HasFlag(CopyFileFlags.IsExecutable)) { _disk.MakeExecutable(dst); } }
public void CopyFile() { // { // Create 4GB file using (var s = ram.Open("bigfile", FileMode.Create, FileAccess.ReadWrite, FileShare.None)) { byte[] buf = new byte[4096]; for (int i = 0; i < 4096; i++) { buf[i] = (byte)(i & 0xff); } for (int i = 0; i < blocks; i++) { s.Write(buf, 0, buf.Length); } } // TODO TEst | FileOperation.Policy.CancelIfError // File session using (var session = new OperationSession()) { // Copy file { // Operation OperationBase op = new CopyFile(session, ram, "bigfile", ram, "bigfile.copy"); // op.Estimate(); // Assert.IsTrue(op.CanRollback); // op.Run(); // Assert using (var s = ram.Open("bigfile.copy", FileMode.Open, FileAccess.Read, FileShare.None)) { byte[] buf = new byte[4096]; for (int i = 0; i < blocks; i++) { int x = s.Read(buf, 0, buf.Length); Assert.AreEqual(buf.Length, x); for (int j = 0; j < buf.Length; j++) { Assert.AreEqual(buf[j], (byte)(j & 0xff)); } } } } // Copy to existing file { // Operation OperationBase op = new CopyFile(session, ram, "bigfile", ram, "bigfile.copy"); try { // Estimate op.Estimate(); // Assert.Fail("Estimate should have failed"); } catch (FileSystemException) { // Catched } } // Copy, run out of memory, rollback { IFileSystem dst = new MemoryFileSystem(blockSize: 1024, maxSpace: 2048); // Operation OperationBase op = new CopyFile(session, ram, "bigfile", dst, "bigfile.copy"); // op.Estimate(); // Assert.IsTrue(op.CanRollback); try { // op.Run(rollbackOnError: true); } catch (FileSystemExceptionOutOfDiskSpace) { Assert.IsFalse(dst.Exists("bigfile.copy")); } } } } }
/// <inheritdoc/> public override IReadOnlySet <FileOrDirectoryArtifact> FilterOutputsCore(IPipFilterContext context, bool negate = false, IList <PipId> constrainingPips = null) { // First we collect all matching seal directories HashSet <DirectoryArtifact> directories = ParallelProcessAllOutputs <DirectoryArtifact>( context, (pipId, localDirectories) => { if (context.GetPipType(pipId) == PipType.SealDirectory) { SealDirectory sd = (SealDirectory)context.HydratePip(pipId); foreach (var item in sd.Contents) { if (PathMatches(item.Path, context.PathTable)) { localDirectories.Add(sd.Directory); break; } } switch (sd.Kind) { case SealDirectoryKind.SourceAllDirectories: case SealDirectoryKind.Opaque: case SealDirectoryKind.SharedOpaque: if (DirectoryPathMatches(sd.DirectoryRoot, false, context.PathTable)) { localDirectories.Add(sd.Directory); } break; case SealDirectoryKind.SourceTopDirectoryOnly: if (DirectoryPathMatches(sd.DirectoryRoot, true, context.PathTable)) { localDirectories.Add(sd.Directory); } break; } } }); // Now look at all pips, checking if their input match one of the files or matching DirectoryArtifacts return(ParallelProcessAllOutputs <FileOrDirectoryArtifact>( context, (pipId, localOutputs) => { switch (context.GetPipType(pipId)) { case PipType.CopyFile: CopyFile cf = (CopyFile)context.HydratePip(pipId); if (PathMatches(cf.Source, context.PathTable) ^ negate) { localOutputs.Add(FileOrDirectoryArtifact.Create(cf.Destination)); } break; case PipType.Process: Process proc = (Process)context.HydratePip(pipId); bool processMatches = PathMatches(proc.Executable, context.PathTable) || MatchesDependencies(context, proc) || MatchesDirectoryDependencies(proc, directories); if (processMatches ^ negate) { // TODO: If only directory dependencies matched, only include outputs from those directories foreach (var output in proc.FileOutputs) { localOutputs.Add(FileOrDirectoryArtifact.Create(output.ToFileArtifact())); } foreach (var output in proc.DirectoryOutputs) { localOutputs.Add(FileOrDirectoryArtifact.Create(output)); } } break; } }, constrainingPips)); }
/// <inheritdoc /> public bool AddCopyFile(CopyFile copyFile, PipId valuePip) { Contract.Requires(copyFile != null, "Argument copyFile cannot be null"); return(PipAlreadyReloaded(copyFile) || m_builder.AddCopyFile(copyFile)); }
public void TestFilePipeline() { string localMusicFolder = System.Environment.GetFolderPath(Environment.SpecialFolder.MyMusic); IEnumerable <string> files = System.IO.Directory.GetFiles(localMusicFolder, "*.mp3").Take(2); string destinationFile = this.GetPathToTestFile("subDir"); string destFilename = System.IO.Path.GetFileName(destinationFile); string destFolder = System.IO.Path.GetDirectoryName(destinationFile); string fileList = System.IO.Path.Combine(destFolder, "Mp3List.txt"); try { System.IO.File.Delete(destinationFile); // register sending the file themselves to blob storage CopyFile sendFileToDest = new CopyFile(destFolder, true); Telegraph.Instance.Register <Messages.UploadMessage>(sendFileToDest); // register sending the file names to blob storage to be appended as a list SendStringToAppendToFile mp3List = new SendStringToAppendToFile(fileList); Telegraph.Instance.Register <Messages.AppendNameToFileMessage>(mp3List); DeleteAllFilesInFolder clearOutAllFiles = new DeleteAllFilesInFolder(); Telegraph.Instance.Register <Messages.DeleteAllFilesMsg>(clearOutAllFiles); var pipeline = Telegraphy.Net.Pipeline // We are creating a pipeline that takes in a string (filename) and returns an UploadMessage .Create <string, Messages.UploadMessage>((string fileName) => { return(new Messages.UploadMessage(fileName)); }) // We are sending that upload message for the file to be copied .Next <string>((Messages.UploadMessage msg) => { Telegraph.Instance.Ask(msg).Wait(); return((string)msg.Message); }) // we are sending name of the file we uploaded returns an upload message .Next <Messages.AppendNameToFileMessage>((string fileName) => { return(new Messages.AppendNameToFileMessage(fileName)); }) // We are creating a pipeline that takes in an UploadMessage (filename) appends it to the append file .Next <string>((Messages.AppendNameToFileMessage msg) => { Telegraph.Instance.Ask(msg).Wait(); return((string)msg.Message); // fileName }); // Process all fo the files in the list var filesNames = pipeline.Process(files).ToArray(); Assert.IsTrue(System.IO.Directory.GetFiles(destFolder).Length == 3); string[] readList = System.IO.File.ReadAllLines(fileList); foreach (var t in files) { Assert.IsTrue(Array.Exists(readList, p => p.Equals(t)), "missing file" + t); } } finally { Telegraph.Instance.Ask(new Messages.DeleteAllFilesMsg(destFolder)).Wait(); Telegraph.Instance.UnRegisterAll(); if (System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(destinationFile))) { System.IO.Directory.Delete(System.IO.Path.GetDirectoryName(destinationFile)); } } }
public static void Main(string[] args) { { // <Snippet_1> IFileSystem ms = new MemoryFileSystem(); ms.CreateFile("file", new byte[1024 * 1024]); using (var s = new OperationSession()) { new CopyFile(s, ms, "file", ms, "file.copy") .Estimate() .AssertCanRollback() .Run() .AssertSuccessful(); } // </Snippet_1> ms.PrintTo(Console.Out, format: PrintTree.Format.Default | PrintTree.Format.Length); } { IFileSystem ms = new MemoryFileSystem(); ms.CreateFile("file", new byte[1024 * 1024]); // <Snippet_1b> var s = new OperationSession(); var op = new CopyFile(s, ms, "file", ms, "file.copy"); op.Estimate(); // </Snippet_1b> // <Snippet_1b1> Console.WriteLine(op.CanRollback); // </Snippet_1b1> // <Snippet_1b2> op.Estimate().AssertCanRollback(); // </Snippet_1b2> // <Snippet_1c> op.Run(); // </Snippet_1c> // <Snippet_1c1> if (op.CurrentState == OperationState.Completed) { Console.WriteLine("ok"); } // </Snippet_1c1> ms.Delete("file.copy"); op = (CopyFile) new CopyFile(s, ms, "file", ms, "file.copy").Estimate(); // <Snippet_1c2> op.Run().AssertSuccessful(); // </Snippet_1c2> ms.Delete("file.copy"); op = (CopyFile) new CopyFile(s, ms, "file", ms, "file.copy").Estimate(); // <Snippet_1c3> try { op.Run(); } catch (Exception) { // Rollback op.CreateRollback()?.Run(); } // </Snippet_1c3> // <Snippet_1c4> op.Run(rollbackOnError: true); // </Snippet_1c4> } { // <Snippet_2> IFileSystem ms = new MemoryFileSystem(); ms.CreateDirectory("dir/dir/dir/"); ms.CreateFile("dir/dir/dir/file", new byte[1024 * 1024]); using (var s = new OperationSession()) { var op = new CopyTree(s, ms, "dir", ms, "dir.copy"); op.Estimate().AssertCanRollback().Run().AssertSuccessful(); } // </Snippet_2> ms.PrintTo(Console.Out); } { // <Snippet_3> IFileSystem ms = new MemoryFileSystem(); using (var s = new OperationSession(policy: OperationPolicy.EstimateOnRun /*important*/)) { Batch batch = new Batch(s, OperationPolicy.Unset); batch.Ops.Add(new CreateDirectory(s, ms, "dir/dir/dir")); batch.Ops.Add(new CopyTree(s, ms, "dir", ms, "dir.copy")); batch.Ops.Add(new Delete(s, ms, "dir/dir", true, policy: OperationPolicy.EstimateOnRun)); batch.Estimate().Run().AssertSuccessful(); } // </Snippet_3> ms.PrintTo(Console.Out); } { // <Snippet_4> IFileSystem ms_src = new MemoryFileSystem(); ms_src.CreateDirectory("dir/dir/dir/"); ms_src.CreateFile("dir/dir/dir/file", new byte[1024 * 1024]); IFileSystem ms_dst = new MemoryFileSystem(); using (var s = new OperationSession()) { var op = new TransferTree(s, ms_src, "dir", ms_dst, "dir.elsewhere"); op.Estimate().AssertCanRollback().Run().AssertSuccessful(); } // </Snippet_4> ms_dst.PrintTo(Console.Out); } { // <Snippet_5> IFileSystem ms = new MemoryFileSystem(); ms.CreateFile("file", new byte[1024 * 1024]); using (var s = new OperationSession()) { new CopyFile(s, ms, "file", ms, "file.copy") .Estimate() .AssertCanRollback() .Run() .AssertSuccessful(); foreach (var @event in s.Events) { Console.WriteLine(@event); } } ms.PrintTo(Console.Out); // </Snippet_5> } { // <Snippet_6> IFileSystem ms = new MemoryFileSystem(); ms.CreateFile("file", new byte[1024 * 20]); using (var s = new OperationSession().SetProgressInterval(1024)) { s.Subscribe(new OpEventPrinter()); new CopyFile(s, ms, "file", ms, "file.copy") .Estimate() .AssertCanRollback() .Run() .AssertSuccessful(); } ms.PrintTo(Console.Out); // </Snippet_6> } { try { // <Snippet_7> IFileSystem ms = new MemoryFileSystem(); ms.CreateFile("file", new byte[1024 * 10]); CancellationTokenSource cancelSrc = new CancellationTokenSource(); using (var s = new OperationSession(cancelSrc: cancelSrc)) { cancelSrc.Cancel(); new Move(s, ms, "file", ms, "file.moved") .Estimate() .AssertCanRollback() .Run() .AssertSuccessful(); } // </Snippet_7> } catch (Exception e) { } } { // <Snippet_8> // </Snippet_8> } { // <Snippet_9> // </Snippet_9> } { // <Snippet_10> // </Snippet_10> } { // <Snippet_11> // </Snippet_11> } { // <Snippet_12> // </Snippet_12> } { // <Snippet_13> // </Snippet_13> } { // <Snippet_14> // </Snippet_14> } { // <Snippet_15> // </Snippet_15> } { // <Snippet_16> // </Snippet_16> } }
/// <summary> /// Gets the inputs consumed by a pip and calls an action /// </summary> public static bool ForEachInput( Pip pip, Func <FileOrDirectoryArtifact, bool> inputAction, bool includeLazyInputs, Func <FileOrDirectoryArtifact, bool> overrideLazyInputAction = null) { // NOTE: Lazy inputs must be processed AFTER regular inputs // This behavior is required by FileContentManager.PopulateDepdencies bool result = true; switch (pip.PipType) { case PipType.CopyFile: CopyFile copyFile = (CopyFile)pip; result = inputAction(FileOrDirectoryArtifact.Create(copyFile.Source)); break; case PipType.Process: Process process = (Process)pip; foreach (var input in process.Dependencies) { if (!inputAction(FileOrDirectoryArtifact.Create(input))) { return(false); } } foreach (var input in process.DirectoryDependencies) { if (!inputAction(FileOrDirectoryArtifact.Create(input))) { return(false); } } break; case PipType.SealDirectory: SealDirectory sealDirectory = (SealDirectory)pip; foreach (var input in sealDirectory.Contents) { if (!inputAction(FileOrDirectoryArtifact.Create(input))) { return(false); } } break; case PipType.Ipc: IpcPip ipcPip = (IpcPip)pip; foreach (var input in ipcPip.FileDependencies) { if (!inputAction(FileOrDirectoryArtifact.Create(input))) { return(false); } } foreach (var input in ipcPip.DirectoryDependencies) { if (!inputAction(FileOrDirectoryArtifact.Create(input))) { return(false); } } if (includeLazyInputs) { overrideLazyInputAction = overrideLazyInputAction ?? inputAction; foreach (var input in ipcPip.LazilyMaterializedDependencies) { if (!overrideLazyInputAction(input)) { return(false); } } } break; } return(result); }
static void CopyProtoToPluginDir(string protoDir, string pluginDir) { CopyFile.CopyDir(protoDir, pluginDir, "*.proto"); }
public void Dispose() { // Clearing all of these ensures that the transient APIs // can't be called outside of the appropriate scope. #region dispose-dispatcher service-apis _GetNuGetExePath = null; _GetNuGetDllPath = null; _DownloadFile = null; _AddPinnedItemToTaskbar = null; _RemovePinnedItemFromTaskbar = null; _CreateShortcutLink = null; _UnzipFileIncremental = null; _UnzipFile = null; _AddFileAssociation = null; _RemoveFileAssociation = null; _AddExplorerMenuItem = null; _RemoveExplorerMenuItem = null; _SetEnvironmentVariable = null; _RemoveEnvironmentVariable = null; _AddFolderToPath = null; _RemoveFolderFromPath = null; _InstallMSI = null; _RemoveMSI = null; _StartProcess = null; _InstallVSIX = null; _UninstallVSIX = null; _InstallPowershellScript = null; _UninstallPowershellScript = null; _SearchForExecutable = null; _GetUserBinFolder = null; _GetSystemBinFolder = null; _CopyFile = null; _CopyFolder = null; _Delete = null; _DeleteFolder = null; _CreateFolder = null; _DeleteFile = null; _BeginTransaction = null; _AbortTransaction = null; _EndTransaction = null; _GenerateUninstallScript = null; _GetKnownFolder = null; _IsElevated = null; #endregion #region dispose-dispatcher core-apis _Warning = null; _Message = null; _Error = null; _Debug = null; _Verbose = null; _ExceptionThrown = null; _Progress = null; _ProgressComplete = null; _GetHostDelegate = null; _IsCancelled = null; #endregion #region dispose-dispatcher request-apis _OkToContinue = null; _YieldPackage = null; _YieldPackageDetails = null; _YieldPackageSwidtag = null; _YieldSource = null; _YieldMetadataDefinition = null; _YieldInstallationOptionsDefinition = null; #endregion #region dispose-dispatcher host-apis _GetMetadataKeys = null; _GetMetadataValues = null; _GetInstallationOptionKeys = null; _GetInstallationOptionValues = null; _PackageSources = null; _GetConfiguration = null; _ShouldContinueWithUntrustedPackageSource = null; _ShouldProcessPackageInstall = null; _ShouldProcessPackageUninstall = null; _ShouldContinueAfterPackageInstallFailure = null; _ShouldContinueAfterPackageUninstallFailure = null; _ShouldContinueRunningInstallScript = null; _ShouldContinueRunningUninstallScript = null; _AskPermission = null; _WhatIf = null; #endregion #region dispose-dispatcher protocol-apis _ProtocolGetNames = null; _ProtocolIsValidSource = null; _ProtocolGetItemMetadata = null; _ProtocolDownloadItem = null; _ProtocolUnpackItem = null; _InstallItem = null; #endregion _callback = null; }
private void TS_CopyFile(string fileName) { if (this.InvokeRequired) { CopyFile del = new CopyFile(TS_CopyFile); Invoke(del, fileName); } else { File.Copy(txtFolderPath.Text + "\\" + fileName, txtTargetPath.Text + "\\" + fileName, true); string text = txtFolderPath.Text + "\\" + fileName + " copied to " + txtTargetPath.Text + "\\" + fileName + "\r\n"; txtActivity.Text += text; } }
/// <inheritdoc /> public virtual bool AddCopyFile([NotNull] CopyFile copyFile, PipId valuePip) => AddPip(copyFile);
public virtual void VisitCopyFile(CopyFile node) { }
public virtual void VisitItem(Object item) { if (item == null) { return; } Module module = item as Module; if (module != null) { VisitModule(module); return; } Product product = item as Product; if (product != null) { VisitProduct(product); return; } Feature feature = item as Feature; if (feature != null) { VisitFeature(feature); return; } AdvtExecuteSequence advtExecuteSequence = item as AdvtExecuteSequence; if (advtExecuteSequence != null) { VisitAdvtExecuteSequence(advtExecuteSequence); return; } InstallUISequence installUISequence = item as InstallUISequence; if (installUISequence != null) { VisitInstallUISequence(installUISequence); return; } User user = item as User; if (user != null) { VisitUser(user); return; } Upgrade upgrade = item as Upgrade; if (upgrade != null) { VisitUpgrade(upgrade); return; } Directory directory = item as Directory; if (directory != null) { VisitDirectory(directory); return; } PropertyRef propertyRef = item as PropertyRef; if (propertyRef != null) { VisitPropertyRef(propertyRef); return; } WebSite webSite = item as WebSite; if (webSite != null) { VisitWebSite(webSite); return; } AdminUISequence adminUISequence = item as AdminUISequence; if (adminUISequence != null) { VisitAdminUISequence(adminUISequence); return; } CustomAction customAction = item as CustomAction; if (customAction != null) { VisitCustomAction(customAction); return; } DirectoryRef directoryRef = item as DirectoryRef; if (directoryRef != null) { VisitDirectoryRef(directoryRef); return; } AppId appId = item as AppId; if (appId != null) { VisitAppId(appId); return; } Media media = item as Media; if (media != null) { VisitMedia(media); return; } CustomTable customTable = item as CustomTable; if (customTable != null) { VisitCustomTable(customTable); return; } Condition condition = item as Condition; if (condition != null) { VisitCondition(condition); return; } SFPCatalog sFPCatalog = item as SFPCatalog; if (sFPCatalog != null) { VisitSFPCatalog(sFPCatalog); return; } UI ui = item as UI; if (ui != null) { VisitUI(ui); return; } FragmentRef fragmentRef = item as FragmentRef; if (fragmentRef != null) { VisitFragmentRef(fragmentRef); return; } Icon icon = item as Icon; if (icon != null) { VisitIcon(icon); return; } Property property = item as Property; if (property != null) { VisitProperty(property); return; } FeatureRef featureRef = item as FeatureRef; if (featureRef != null) { VisitFeatureRef(featureRef); return; } WebDirProperties webDirProperties = item as WebDirProperties; if (webDirProperties != null) { VisitWebDirProperties(webDirProperties); return; } ComplianceCheck complianceCheck = item as ComplianceCheck; if (complianceCheck != null) { VisitComplianceCheck(complianceCheck); return; } InstallExecuteSequence installExecuteSequence = item as InstallExecuteSequence; if (installExecuteSequence != null) { VisitInstallExecuteSequence(installExecuteSequence); return; } AdminExecuteSequence adminExecuteSequence = item as AdminExecuteSequence; if (adminExecuteSequence != null) { VisitAdminExecuteSequence(adminExecuteSequence); return; } Binary binary = item as Binary; if (binary != null) { VisitBinary(binary); return; } Group group = item as Group; if (group != null) { VisitGroup(group); return; } WebApplication webApplication = item as WebApplication; if (webApplication != null) { VisitWebApplication(webApplication); return; } ActionSequenceType actionSequenceType = item as ActionSequenceType; if (actionSequenceType != null) { VisitActionSequenceType(actionSequenceType); return; } ActionModuleSequenceType actionModuleSequenceType = item as ActionModuleSequenceType; if (actionModuleSequenceType != null) { VisitActionModuleSequenceType(actionModuleSequenceType); return; } BillboardAction billboardAction = item as BillboardAction; if (billboardAction != null) { VisitBillboardAction(billboardAction); return; } Error error = item as Error; if (error != null) { VisitError(error); return; } Dialog dialog = item as Dialog; if (dialog != null) { VisitDialog(dialog); return; } ProgressText progressText = item as ProgressText; if (progressText != null) { VisitProgressText(progressText); return; } TextStyle textStyle = item as TextStyle; if (textStyle != null) { VisitTextStyle(textStyle); return; } ListBox listBox = item as ListBox; if (listBox != null) { VisitListBox(listBox); return; } ListView listView = item as ListView; if (listView != null) { VisitListView(listView); return; } ComboBox comboBox = item as ComboBox; if (comboBox != null) { VisitComboBox(comboBox); return; } UIText uIText = item as UIText; if (uIText != null) { VisitUIText(uIText); return; } RadioGroup radioGroup = item as RadioGroup; if (radioGroup != null) { VisitRadioGroup(radioGroup); return; } IniFileSearch iniFileSearch = item as IniFileSearch; if (iniFileSearch != null) { VisitIniFileSearch(iniFileSearch); return; } RegistrySearch registrySearch = item as RegistrySearch; if (registrySearch != null) { VisitRegistrySearch(registrySearch); return; } ComponentSearch componentSearch = item as ComponentSearch; if (componentSearch != null) { VisitComponentSearch(componentSearch); return; } FileSearch fileSearch = item as FileSearch; if (fileSearch != null) { VisitFileSearch(fileSearch); return; } DirectorySearch directorySearch = item as DirectorySearch; if (directorySearch != null) { VisitDirectorySearch(directorySearch); return; } File file = item as File; if (file != null) { VisitFile(file); return; } Component component = item as Component; if (component != null) { VisitComponent(component); return; } Merge merge = item as Merge; if (merge != null) { VisitMerge(merge); return; } Custom custom = item as Custom; if (custom != null) { VisitCustom(custom); return; } WebError webError = item as WebError; if (webError != null) { VisitWebError(webError); return; } WebVirtualDir webVirtualDir = item as WebVirtualDir; if (webVirtualDir != null) { VisitWebVirtualDir(webVirtualDir); return; } WebDir webDir = item as WebDir; if (webDir != null) { VisitWebDir(webDir); return; } WebFilter webFilter = item as WebFilter; if (webFilter != null) { VisitWebFilter(webFilter); return; } MergeRef mergeRef = item as MergeRef; if (mergeRef != null) { VisitMergeRef(mergeRef); return; } Subscribe subscribe = item as Subscribe; if (subscribe != null) { VisitSubscribe(subscribe); return; } Publish publish = item as Publish; if (publish != null) { VisitPublish(publish); return; } TypeLib typeLib = item as TypeLib; if (typeLib != null) { VisitTypeLib(typeLib); return; } Shortcut shortcut = item as Shortcut; if (shortcut != null) { VisitShortcut(shortcut); return; } ODBCTranslator oDBCTranslator = item as ODBCTranslator; if (oDBCTranslator != null) { VisitODBCTranslator(oDBCTranslator); return; } Permission permission = item as Permission; if (permission != null) { VisitPermission(permission); return; } Class _class = item as Class; if (_class != null) { VisitClass(_class); return; } CopyFile copyFile = item as CopyFile; if (copyFile != null) { VisitCopyFile(copyFile); return; } Patch patch = item as Patch; if (patch != null) { VisitPatch(patch); return; } ODBCDriver oDBCDriver = item as ODBCDriver; if (oDBCDriver != null) { VisitODBCDriver(oDBCDriver); return; } PerfCounter perfCounter = item as PerfCounter; if (perfCounter != null) { VisitPerfCounter(perfCounter); return; } FileShare fileShare = item as FileShare; if (fileShare != null) { VisitFileShare(fileShare); return; } Certificate certificate = item as Certificate; if (certificate != null) { VisitCertificate(certificate); return; } Category category = item as Category; if (category != null) { VisitCategory(category); return; } WebAppPool webAppPool = item as WebAppPool; if (webAppPool != null) { VisitWebAppPool(webAppPool); return; } SqlString sqlString = item as SqlString; if (sqlString != null) { VisitSqlString(sqlString); return; } ServiceControl serviceControl = item as ServiceControl; if (serviceControl != null) { VisitServiceControl(serviceControl); return; } IsolateComponent isolateComponent = item as IsolateComponent; if (isolateComponent != null) { VisitIsolateComponent(isolateComponent); return; } ServiceConfig serviceConfig = item as ServiceConfig; if (serviceConfig != null) { VisitServiceConfig(serviceConfig); return; } WebProperty webProperty = item as WebProperty; if (webProperty != null) { VisitWebProperty(webProperty); return; } SqlScript sqlScript = item as SqlScript; if (sqlScript != null) { VisitSqlScript(sqlScript); return; } SqlDatabase sqlDatabase = item as SqlDatabase; if (sqlDatabase != null) { VisitSqlDatabase(sqlDatabase); return; } WebLockdown webLockdown = item as WebLockdown; if (webLockdown != null) { VisitWebLockdown(webLockdown); return; } Extension extension = item as Extension; if (extension != null) { VisitExtension(extension); return; } ReserveCost reserveCost = item as ReserveCost; if (reserveCost != null) { VisitReserveCost(reserveCost); return; } RemoveFile removeFile = item as RemoveFile; if (removeFile != null) { VisitRemoveFile(removeFile); return; } ProgId progId = item as ProgId; if (progId != null) { VisitProgId(progId); return; } Microsoft.Tools.WindowsInstallerXml.Serialize.Environment environment = item as Microsoft.Tools.WindowsInstallerXml.Serialize.Environment; if (environment != null) { VisitEnvironment(environment); return; } ServiceInstall serviceInstall = item as ServiceInstall; if (serviceInstall != null) { VisitServiceInstall(serviceInstall); return; } IniFile iniFile = item as IniFile; if (iniFile != null) { VisitIniFile(iniFile); return; } Registry registry = item as Registry; if (registry != null) { VisitRegistry(registry); return; } CreateFolder createFolder = item as CreateFolder; if (createFolder != null) { VisitCreateFolder(createFolder); return; } MIME mIME = item as MIME; if (mIME != null) { VisitMIME(mIME); return; } Verb verb = item as Verb; if (verb != null) { VisitVerb(verb); return; } }
/// <inheritdoc /> public bool AddCopyFile(CopyFile copyFile, PipId valuePip) { Contract.Requires(copyFile != null, "Argument copyFile cannot be null"); Tracing.Logger.Log.CannotAddCreatePipsDuringConfigOrModuleEvaluation(Events.StaticContext); return(false); }
public static string[] SplitedString; // The Splited String public static void ReadAsync(string Command) { SplitedString = Command.Split(' '); // The Splited String // Format the current Taiyou Line for (int i = 0; i < SplitedString.Length; i++) { // FORMATATION SplitedString[i] = SplitedString[i].Replace("%N", Environment.NewLine); // New Line for (int i2 = 0; i2 < GlobalVars_String_Names.Count; i2++) { SplitedString[i] = SplitedString[i].Replace("$STRING_" + GlobalVars_String_Names[i2] + "$", GlobalVars_String_Content[i2].Replace(" ", "")); } for (int i2 = 0; i2 < GlobalVars_Bool_Names.Count; i2++) { SplitedString[i] = SplitedString[i].Replace("$BOOL_" + GlobalVars_Bool_Names[i2] + "$", Convert.ToString(GlobalVars_Bool_Content[i2])); } for (int i2 = 0; i2 < GlobalVars_Int_Names.Count; i2++) { SplitedString[i] = SplitedString[i].Replace("$INT_" + GlobalVars_Int_Names[i2] + "$", Convert.ToString(GlobalVars_Int_Content[i2])); } for (int i2 = 0; i2 < GlobalVars_Float_Names.Count; i2++) { SplitedString[i] = SplitedString[i].Replace("$FLOAT_" + GlobalVars_Float_Names[i2] + "$", Convert.ToString(GlobalVars_Float_Content[i2])); } if (SplitedString[i].Contains("%RANDOM%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // Number 1 string Arg2 = SubSplitedString[3]; // Number 2 Random RND = new Random(); SplitedString[i] = SplitedString[i].Replace("%RANDOM%" + Arg1 + "%" + Arg2 + "%", Convert.ToString(RND.Next(Convert.ToInt32(Arg1), Convert.ToInt32(Arg2)))); } if (SplitedString[i].Contains("%ADD%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // Number 1 string Arg2 = SubSplitedString[3]; // Number 2 int MathResult = Convert.ToInt32(Arg1) + Convert.ToInt32(Arg2); SplitedString[i] = SplitedString[i].Replace("%ADD%" + Arg1 + "%" + Arg2 + "%", Convert.ToString(MathResult)); } if (SplitedString[i].Contains("%DECREASE%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // Number 1 string Arg2 = SubSplitedString[3]; // Number 2 int MathResult = Convert.ToInt32(Arg1) - Convert.ToInt32(Arg2); SplitedString[i] = SplitedString[i].Replace("%DECREASE%" + Arg1 + "%" + Arg2 + "%", Convert.ToString(MathResult)); } if (SplitedString[i].Contains("%MULTIPLY%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // Number 1 string Arg2 = SubSplitedString[3]; // MultiplyTimes int MathResult = Convert.ToInt32(Arg1) * Convert.ToInt32(Arg2); SplitedString[i] = SplitedString[i].Replace("%MULTIPLY%" + Arg1 + "%" + Arg2 + "%", Convert.ToString(MathResult)); } if (SplitedString[i].Contains("%DIVIDE%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // Number 1 string Arg2 = SubSplitedString[3]; // Number 2 int MathResult = Convert.ToInt32(Arg1) / Convert.ToInt32(Arg2); SplitedString[i] = SplitedString[i].Replace("%DIVIDE%" + Arg1 + "%" + Arg2 + "%", Convert.ToString(MathResult)); } if (SplitedString[i].Contains("%DIFERENCE%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // Number 1 string Arg2 = SubSplitedString[3]; // Number 2 int MathResult = Math.Abs(Convert.ToInt32(Arg1) - Convert.ToInt32(Arg2)); SplitedString[i] = SplitedString[i].Replace("%DIFERENCE%" + Arg1 + "%" + Arg2 + "%", Convert.ToString(MathResult)); } if (SplitedString[i].Contains("%PERCENTAGE%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // Number 1 string Arg2 = SubSplitedString[3]; // Number 2 int MathResult = (int)Math.Round((double)(100 * Convert.ToInt32(Arg1)) / Convert.ToInt32(Arg2)); SplitedString[i] = SplitedString[i].Replace("%PERCENTAGE%" + Arg1 + "%" + Arg2 + "%", Convert.ToString(MathResult)); } if (SplitedString[i].Contains("%LOCATION_OF%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // Render Type string Arg2 = SubSplitedString[3]; // Render Name string Arg3 = SubSplitedString[4]; // Value Type Rectangle RectObject = GlobalVars_Rectangle_Content[RenderQuee.Main.RenderCommand_RectangleVar.IndexOf(Arg2)]; int RenderNameIndex = -1; if (Arg1 == "SPRITE") { RenderNameIndex = RenderQuee.Main.RenderCommand_Name.IndexOf(Arg2); } ; if (Arg1 == "TEXT") { RenderNameIndex = RenderQuee.Main.TextRenderCommand_Name.IndexOf(Arg2); } ; int ValToReturn = 0; if (Arg3 == "X" && Arg1 == "SPRITE") { ValToReturn = RectObject.X; } ; if (Arg3 == "X" && Arg1 == "TEXT") { ValToReturn = RenderQuee.Main.TextRenderCommand_X[RenderNameIndex]; } if (Arg3 == "Y" && Arg1 == "SPRITE") { ValToReturn = RectObject.Y; } ; if (Arg3 == "Y" && Arg1 == "TEXT") { ValToReturn = RenderQuee.Main.TextRenderCommand_Y[RenderNameIndex]; } ; if (Arg3 == "W" && Arg1 == "SPRITE") { ValToReturn = RectObject.Width; } ; if (Arg3 == "H" && Arg1 == "SPRITE") { ValToReturn = RectObject.Height; } ; SplitedString[i] = SplitedString[i].Replace("%LOCATION_OF%" + Arg1 + "%" + Arg2 + "%" + Arg3 + "%", Convert.ToString(ValToReturn)); } if (SplitedString[i].Contains("%COLOR_VALUE%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string Arg1 = SubSplitedString[2]; // ColorVarName string Arg2 = SubSplitedString[3]; // CodeName int ColorVarIndex = GlobalVars_Color_Names.IndexOf(Arg1); string ValToReturn = "0"; if (ColorVarIndex == -1) { throw new Exception("Color Variable [" + Arg1 + "] does not exist."); } if (Arg2.Equals("R")) { ValToReturn = Convert.ToString(GlobalVars_Color_Content[ColorVarIndex].R); } ; if (Arg2.Equals("G")) { ValToReturn = Convert.ToString(GlobalVars_Color_Content[ColorVarIndex].G); } ; if (Arg2.Equals("B")) { ValToReturn = Convert.ToString(GlobalVars_Color_Content[ColorVarIndex].B); } ; if (Arg2.Equals("A")) { ValToReturn = Convert.ToString(GlobalVars_Color_Content[ColorVarIndex].A); } ; if (Arg2.Equals("ALL")) { ValToReturn = GlobalVars_Color_Content[ColorVarIndex].R + "," + GlobalVars_Color_Content[ColorVarIndex].G + "," + GlobalVars_Color_Content[ColorVarIndex].B + "," + GlobalVars_Color_Content[ColorVarIndex].A; } ; SplitedString[i] = SplitedString[i].Replace("%COLOR_VALUE%" + Arg1 + "%" + Arg2 + "%", Convert.ToString(ValToReturn)); } if (SplitedString[i].Contains("%LIST_VALUE%")) { string[] SubSplitedString = SplitedString[i].Split('%'); string ValToReturn = "null_or_incorrect"; string Arg1 = SubSplitedString[2]; // ListType string Arg2 = SubSplitedString[3]; // ListName string Arg3 = SubSplitedString[4]; // Index if (Arg1.Equals("STRING")) { int ListNameIndex = GlobalVars_StringList_Names.IndexOf(Arg2); int Index = Convert.ToInt32(Arg3); ValToReturn = GlobalVars_StringList_Content[ListNameIndex][Index]; } if (Arg1.Equals("INT")) { int ListNameIndex = GlobalVars_IntList_Names.IndexOf(Arg2); int Index = Convert.ToInt32(Arg3); ValToReturn = Convert.ToString(GlobalVars_IntList_Content[ListNameIndex][Index]); } if (Arg1.Equals("COLOR")) { int ListNameIndex = GlobalVars_ColorList_Names.IndexOf(Arg2); int Index = Convert.ToInt32(Arg3); Color ColorGetted = GlobalVars_ColorList_Content[ListNameIndex][Index]; string ColorCodeToReturn = ColorGetted.R + "," + ColorGetted.G + "," + ColorGetted.B + "," + ColorGetted.A; ValToReturn = ColorCodeToReturn; } if (Arg1.Equals("FLOAT")) { int ListNameIndex = GlobalVars_FloatList_Names.IndexOf(Arg2); int Index = Convert.ToInt32(Arg3); ValToReturn = Convert.ToString(GlobalVars_FloatList_Content[ListNameIndex][Index]); } if (Arg1.Equals("RECTANGLE")) { int ListNameIndex = GlobalVars_RectangleList_Names.IndexOf(Arg2); int Index = Convert.ToInt32(Arg3); Rectangle RectGetted = GlobalVars_RectangleList_Content[ListNameIndex][Index]; string RectangleCode = RectGetted.X + "," + RectGetted.Y + "," + RectGetted.Width + "," + RectGetted.Height; ValToReturn = Convert.ToString(RectangleCode); } SplitedString[i] = SplitedString[i].Replace("%LIST_VALUE%" + Arg1 + "%" + Arg2 + "%" + Arg3 + "%", Convert.ToString(ValToReturn)); } } // Begin Command Interpretation if (SplitedString[0].Equals("0x0")) { Clear.Initialize(); } if (SplitedString[0].Equals("0x1")) { Call.Initialize(SplitedString[1]); } if (SplitedString[0].Equals("0x2")) { Write.Initialize(SplitedString[1]); } if (SplitedString[0].Equals("0x3")) { WriteLine.Initialize(SplitedString[1]); } if (SplitedString[0].Equals("0x4")) { WriteFile.Initialize(SplitedString[1], SplitedString[2]); } if (SplitedString[0].Equals("0x5")) { TaiyouIF.Initialize(SplitedString); } if (SplitedString[0].Equals("0x6")) { Abort.Initialize(); } if (SplitedString[0].Equals("0x7")) { Declare.Initialize(SplitedString); } if (SplitedString[0].Equals("0x8")) { WriteVar.Initialize(SplitedString); } if (SplitedString[0].Equals("0x9")) { MathOP.Intialize(SplitedString); } if (SplitedString[0].Equals("1x0")) { Goto.Initialize(SplitedString); } if (SplitedString[0].Equals("1x1")) { FileExists.Initialize(SplitedString); } if (SplitedString[0].Equals("1x2")) { ReadFile.Intialize(SplitedString); } if (SplitedString[0].Equals("1x3")) { DirectoryExists.Initialize(SplitedString); } if (SplitedString[0].Equals("1x4")) { DownloadServerString.Initialize(SplitedString); } if (SplitedString[0].Equals("1x5")) { CopyFile.Initialize(SplitedString); } if (SplitedString[0].Equals("1x6")) { MoveFile.Initialize(SplitedString); } if (SplitedString[0].Equals("1x7")) { DeleteFile.Initialize(SplitedString); } if (SplitedString[0].Equals("1x8")) { AddRenderQuee.Initialize(SplitedString); } if (SplitedString[0].Equals("1x9")) { AddEvent.Initialize(SplitedString); } if (SplitedString[0].Equals("2x0")) { CheckEvent.Initialize(SplitedString); } if (SplitedString[0].Equals("2x1")) { ChangeWindowPropertie.Initialize(SplitedString); } if (SplitedString[0].Equals("2x2")) { Colision.Initialize(SplitedString); } if (SplitedString[0].Equals("2x3")) { Reload.Initialize(SplitedString); } if (SplitedString[0].Equals("2x4")) { GetKeyPressed.Initialize(SplitedString); } if (SplitedString[0].Equals("2x5")) { AddRenderTextQuee.Initialize(SplitedString); } if (SplitedString[0].Equals("2x6")) { ChangeRenderProp.Initialize(SplitedString); } if (SplitedString[0].Equals("2x7")) { ChangeBackgroundColor.Initialize(SplitedString); } if (SplitedString[0].Equals("2x8")) { Undeclare.Initialize(SplitedString); } if (SplitedString[0].Equals("2x9")) { SendBGMCommand.Initialize(SplitedString); } if (SplitedString[0].Equals("3x0")) { MasterVolume.Initialize(SplitedString); } if (SplitedString[0].Equals("3x1")) { LanguageSystemManager.Initialize(SplitedString); } if (SplitedString[0].Equals("3x2")) { // FIXME Not Working //VarMath.Initialize(SplitedString); } if (Global.IsLowLevelDebugEnabled) { for (int i = 0; i < SplitedString.Length; i++) { Console.Write(SplitedString[i] + " "); } Console.Write("\n"); } }
private ActionBase ParseAction(XmlNode node, ActionType action_type) { switch (action_type) { case ActionType.Wait: int waittime = Convert.ToInt32(node.Attributes["duration_ms"].Value); WaitAction wait = new WaitAction(); wait.Milliseconds = waittime; return(wait); case ActionType.Execute: string filename = mroot.substitue_enviro_vars(node.Attributes["filename"].Value); string paramxs = mroot.substitue_enviro_vars(node.Attributes["params"].Value); bool onlyIfnotRunning = true; if (node.Attributes["onlyIfNotRunning"] != null) { onlyIfnotRunning = Boolean.Parse(node.Attributes["onlyIfNotRunning"].Value); } ExecuteProcess executeAction = new ExecuteProcess(); executeAction.FileName = filename; executeAction.Params = paramxs; executeAction.OnlyIfNotRunning = onlyIfnotRunning; return(executeAction); case ActionType.CopyFolder: string source = mroot.substitue_enviro_vars(node.Attributes["source"].Value); string destination = mroot.substitue_enviro_vars(node.Attributes["destination"].Value); string file_pattern = node.Attributes["copy_filepattern"].Value; string dir_pattern = node.Attributes["copy_dirpattern"].Value; CopyFolder copyFolder = new CopyFolder(); copyFolder.Source = source; copyFolder.Destination = destination; copyFolder.CopyFilePattern = file_pattern; copyFolder.CopyDirPattern = dir_pattern; return(copyFolder); case ActionType.CopyFile: source = mroot.substitue_enviro_vars(node.Attributes["source"].Value); destination = mroot.substitue_enviro_vars(node.Attributes["destination"].Value); CopyFile copyFile = new CopyFile(); copyFile.Source = source; copyFile.Destination = destination; return(copyFile); case ActionType.DeleteFiles: string sourceFolder = mroot.substitue_enviro_vars(node.Attributes["source"].Value); string delete_pattern = node.Attributes["pattern"].Value; bool recursive_delete = Convert.ToBoolean(node.Attributes["recursive"].Value); DeleteFiles delteFiles = new DeleteFiles(); delteFiles.SourceFolder = sourceFolder; delteFiles.DeletePattern = delete_pattern; delteFiles.RecursiveDelete = recursive_delete; return(delteFiles); case ActionType.DeleteFolders: sourceFolder = mroot.substitue_enviro_vars(node.Attributes["source"].Value); delete_pattern = node.Attributes["pattern"].Value; DeleteFolders deleteFolders = new DeleteFolders(); deleteFolders.SourceFolder = sourceFolder; deleteFolders.DeletePattern = delete_pattern; return(deleteFolders); case ActionType.ZipFolder: sourceFolder = mroot.substitue_enviro_vars(node.Attributes["source"].Value); string zipfile_destination = mroot.substitue_enviro_vars(node.Attributes["zipfile"].Value); ZipFolder zipFolder = new ZipFolder(); zipFolder.SourceFolder = sourceFolder; zipFolder.DestinationZip = zipfile_destination; return(zipFolder); case ActionType.ShowDialog: ShowDialog showDialog = new ShowDialog(); showDialog.Message = mroot.substitue_enviro_vars(node.Attributes["message"].Value); showDialog.MessageType = (ShowDialog.Type)Enum.Parse(typeof(ShowDialog.Type), node.Attributes["messagetype"].Value, true); return(showDialog); default: return(null); } }
static void ClearPluginDir(string dir) { CopyFile.ClearFolder(dir, "*.cs"); CopyFile.ClearFolder(dir, "*.proto"); CopyFile.ClearFolder(dir, "*.zip"); }
public bool CopyFile(string sourcePath, string destinationPath) { CheckDisposed(); return((_CopyFile ?? (_CopyFile = (_callback.Resolve <CopyFile>() ?? ((psourcePath, pdestinationPath) => default(bool)))))(sourcePath, destinationPath)); }
private ActionBase ParseObjectAction(JObject node, ActionType action_type) { switch (action_type) { case ActionType.ControlFlow: var condition = (node["condition"].ToString()); if (condition.Equals("dialog")) { return(ParseDialogControlFlow(node)); } return(null); case ActionType.Execute: string filename = mroot.substitue_enviro_vars(node["filename"].ToString()); string paramxs = node.ContainsKey("params") ? mroot.substitue_enviro_vars(node["params"].ToString()) : ""; bool onlyIfnotRunning = node.ContainsKey("onlyIfNotRunning") ? node["params"].Value <bool>() : true; ExecuteProcess executeAction = new ExecuteProcess(); executeAction.FileName = filename; executeAction.Params = paramxs; executeAction.OnlyIfNotRunning = onlyIfnotRunning; return(executeAction); case ActionType.Wait: int waittime = (node["duration_ms"].Value <Int32>()); WaitAction wait = new WaitAction(); wait.Milliseconds = waittime; return(wait); case ActionType.ShowDialog: ShowDialog showDialog = new ShowDialog(); showDialog.Message = mroot.substitue_enviro_vars(node["message"].ToString()); if (node.ContainsKey("messagetype")) { showDialog.MessageType = (ShowDialog.Type)Enum.Parse(typeof(ShowDialog.Type), node["messagetype"].ToString(), true); } return(showDialog); case ActionType.CopyFolder: string source = mroot.substitue_enviro_vars(node["source"].ToString()); string destination = mroot.substitue_enviro_vars(node["destination"].ToString()); string file_pattern = node.ContainsKey("desc") ? node["copy_filepattern"].ToString() : null; string dir_pattern = node.ContainsKey("desc") ? node["copy_dirpattern"].ToString() : null; CopyFolder copyFolder = new CopyFolder(); copyFolder.Source = source ?? copyFolder.Source; copyFolder.Destination = destination ?? copyFolder.Destination; copyFolder.CopyFilePattern = file_pattern ?? copyFolder.CopyFilePattern; copyFolder.CopyDirPattern = dir_pattern ?? copyFolder.CopyDirPattern; return(copyFolder); case ActionType.CopyFile: source = mroot.substitue_enviro_vars(node["source"].ToString()); destination = mroot.substitue_enviro_vars(node["destination"].ToString()); CopyFile copyFile = new CopyFile(); copyFile.Source = source; copyFile.Destination = destination; return(copyFile); case ActionType.DeleteFile: { string sourceFile = mroot.substitue_enviro_vars(node["source"].ToString()); DeleteFile delteFiles = new DeleteFile(); delteFiles.SourceFile = sourceFile; return(delteFiles); } case ActionType.DeleteFiles: { string sourceFolder = mroot.substitue_enviro_vars(node["source"].ToString()); string delete_pattern = node.ContainsKey("pattern") ? node["pattern"].ToString() : "(.)"; bool recursive_delete = node.ContainsKey("recursive") ? node["recursive"].Value <bool>() : false; DeleteFiles delteFiles = new DeleteFiles(); delteFiles.SourceFolder = sourceFolder; delteFiles.DeletePattern = delete_pattern; delteFiles.RecursiveDelete = recursive_delete; return(delteFiles); } case ActionType.DeleteFolder: { string dirPath = mroot.substitue_enviro_vars(node["source"].ToString()); DeleteFolder deleteFolder = new DeleteFolder(); deleteFolder.FolderPath = dirPath; return(deleteFolder); } case ActionType.DeleteFolders: { string sourceFolder = mroot.substitue_enviro_vars(node["source"].ToString()); string delete_pattern = node.ContainsKey("pattern") ? node["pattern"].ToString() : "(.)"; DeleteFolders deleteFolders = new DeleteFolders(); deleteFolders.SourceFolder = sourceFolder; deleteFolders.DeletePattern = delete_pattern; return(deleteFolders); } case ActionType.ZipFolder: { string sourceFolder = mroot.substitue_enviro_vars(node["source"].ToString()); string zipfile_destination = mroot.substitue_enviro_vars(node["zipfile"].ToString()); ZipFolder zipFolder = new ZipFolder(); zipFolder.SourceFolder = sourceFolder; zipFolder.DestinationZip = zipfile_destination; return(zipFolder); } } return(null); }
public async Task Stress() { const int N = 5; const int M = N * N; var context = BuildXLContext.CreateInstanceForTesting(); var loggingContext = CreateLoggingContextForTest(); var pathTable = context.PathTable; using (var tempFiles = new TempFileStorage(canGetFileNames: true)) { var config = ConfigHelpers.CreateDefault(pathTable, tempFiles.GetUniqueFileName(), tempFiles); using (var pipTable = new PipTable( context.PathTable, context.SymbolTable, initialBufferSize: 1024, maxDegreeOfParallelism: (Environment.ProcessorCount + 2) / 3, debug: false)) { var executionEnvironment = new PipQueueTestExecutionEnvironment( context, config, pipTable, Path.Combine(TestOutputDirectory, "temp"), TryGetSubstSourceAndTarget(out string substSource, out string substTarget) ? (substSource, substTarget) : default((string, string)?), GetSandboxConnection()); Func <RunnablePip, Task <PipResult> > taskFactory = async(runnablePip) => { PipResult result; var operationTracker = new OperationTracker(runnablePip.LoggingContext); var pip = runnablePip.Pip; using (var operationContext = operationTracker.StartOperation(PipExecutorCounter.PipRunningStateDuration, pip.PipId, pip.PipType, runnablePip.LoggingContext)) { result = await TestPipExecutor.ExecuteAsync(operationContext, executionEnvironment, pip); } executionEnvironment.MarkExecuted(pip); return(result); }; string executable = CmdHelper.OsShellExe; FileArtifact executableArtifact = FileArtifact.CreateSourceFile(AbsolutePath.Create(pathTable, executable)); // This is the only file artifact we reference without a producer. Rather than scheduling a hashing pip, let's just invent one (so fingerprinting can succeed). executionEnvironment.AddWellKnownFile(executableArtifact, WellKnownContentHashes.UntrackedFile); using (var phase1PipQueue = new PipQueue(executionEnvironment.Configuration.Schedule)) { // phase 1: create some files var baseFileArtifacts = new List <FileArtifact>(); for (int i = 0; i < N; i++) { string destination = tempFiles.GetUniqueFileName(); AbsolutePath destinationAbsolutePath = AbsolutePath.Create(pathTable, destination); FileArtifact destinationArtifact = FileArtifact.CreateSourceFile(destinationAbsolutePath).CreateNextWrittenVersion(); baseFileArtifacts.Add(destinationArtifact); PipData contents = PipDataBuilder.CreatePipData( context.StringTable, " ", PipDataFragmentEscaping.CRuntimeArgumentRules, i.ToString(CultureInfo.InvariantCulture)); var writeFile = new WriteFile(destinationArtifact, contents, WriteFileEncoding.Utf8, ReadOnlyArray <StringId> .Empty, PipProvenance.CreateDummy(context)); var pipId = pipTable.Add((uint)(i + 1), writeFile); var contentHash = ContentHashingUtilities.HashString(contents.ToString(pathTable)); executionEnvironment.AddExpectedWrite(writeFile, destinationArtifact, contentHash); var runnable = RunnablePip.Create(loggingContext, executionEnvironment, pipId, pipTable.GetPipType(pipId), 0, taskFactory, 0); runnable.Start(new OperationTracker(loggingContext), loggingContext); runnable.SetDispatcherKind(DispatcherKind.IO); phase1PipQueue.Enqueue(runnable); } phase1PipQueue.SetAsFinalized(); phase1PipQueue.DrainQueues(); await Task.WhenAll( Enumerable.Range(0, 2).Select( async range => { using (var phase2PipQueue = new PipQueue(executionEnvironment.Configuration.Schedule)) { // phase 2: do some more with those files var pips = new ConcurrentDictionary <PipId, Tuple <string, int> >(); var checkerTasks = new ConcurrentQueue <Task>(); Action <PipId, Task <PipResult> > callback = (id, task) => { XAssert.IsTrue(task.Status == TaskStatus.RanToCompletion); XAssert.IsFalse(task.Result.Status.IndicatesFailure()); Tuple <string, int> t; if (!pips.TryRemove(id, out t)) { XAssert.Fail(); } checkerTasks.Enqueue( Task.Run( () => { string actual = File.ReadAllText(t.Item1).Trim(); // TODO: Make this async XAssert.AreEqual(actual, t.Item2.ToString()); })); }; var r = new Random(0); for (int i = 0; i < M; i++) { int sourceIndex = r.Next(baseFileArtifacts.Count); FileArtifact sourceArtifact = baseFileArtifacts[sourceIndex]; string destination = tempFiles.GetUniqueFileName(); AbsolutePath destinationAbsolutePath = AbsolutePath.Create(pathTable, destination); FileArtifact destinationArtifact = FileArtifact.CreateSourceFile(destinationAbsolutePath).CreateNextWrittenVersion(); Pip pip; DispatcherKind queueKind; switch (r.Next(2)) { case 0: pip = new CopyFile(sourceArtifact, destinationArtifact, ReadOnlyArray <StringId> .Empty, PipProvenance.CreateDummy(context)); queueKind = DispatcherKind.IO; executionEnvironment.AddExpectedWrite(pip, destinationArtifact, executionEnvironment.GetExpectedContent(sourceArtifact)); break; case 1: string workingDirectory = OperatingSystemHelper.IsUnixOS ? "/tmp" : Environment.GetFolderPath(Environment.SpecialFolder.Windows); AbsolutePath workingDirectoryAbsolutePath = AbsolutePath.Create(pathTable, workingDirectory); var pipData = OperatingSystemHelper.IsUnixOS ? PipDataBuilder.CreatePipData(pathTable.StringTable, " ", PipDataFragmentEscaping.CRuntimeArgumentRules, "-c", "'", "cp", sourceArtifact, destinationArtifact, "'") : PipDataBuilder.CreatePipData(pathTable.StringTable, " ", PipDataFragmentEscaping.CRuntimeArgumentRules, "/d", "/c", "copy", "/B", sourceArtifact, destinationArtifact); queueKind = DispatcherKind.CPU; pip = new Process( executableArtifact, workingDirectoryAbsolutePath, pipData, FileArtifact.Invalid, PipData.Invalid, ReadOnlyArray <EnvironmentVariable> .Empty, FileArtifact.Invalid, FileArtifact.Invalid, FileArtifact.Invalid, tempFiles.GetUniqueDirectory(pathTable), null, null, ReadOnlyArray <FileArtifact> .FromWithoutCopy(executableArtifact, sourceArtifact), ReadOnlyArray <FileArtifactWithAttributes> .FromWithoutCopy(destinationArtifact.WithAttributes()), ReadOnlyArray <DirectoryArtifact> .Empty, ReadOnlyArray <DirectoryArtifact> .Empty, ReadOnlyArray <PipId> .Empty, ReadOnlyArray <AbsolutePath> .From(CmdHelper.GetCmdDependencies(pathTable)), ReadOnlyArray <AbsolutePath> .From(CmdHelper.GetCmdDependencyScopes(pathTable)), ReadOnlyArray <StringId> .Empty, ReadOnlyArray <int> .Empty, ReadOnlyArray <ProcessSemaphoreInfo> .Empty, provenance: PipProvenance.CreateDummy(context), toolDescription: StringId.Invalid, additionalTempDirectories: ReadOnlyArray <AbsolutePath> .Empty); executionEnvironment.AddExpectedWrite(pip, destinationArtifact, executionEnvironment.GetExpectedContent(sourceArtifact)); break; default: Contract.Assert(false); continue; } var pipId = pipTable.Add((uint)((range *M) + N + i + 1), pip); Func <RunnablePip, Task> taskFactoryWithCallback = async(runnablePip) => { var task = taskFactory(runnablePip); var pipResult = await task; callback(pipId, task); }; var runnable = RunnablePip.Create(loggingContext, executionEnvironment, pipId, pipTable.GetPipType(pipId), 0, taskFactoryWithCallback, 0); runnable.Start(new OperationTracker(loggingContext), loggingContext); runnable.SetDispatcherKind(queueKind); phase2PipQueue.Enqueue(runnable); if (!pips.TryAdd(pipId, Tuple.Create(destination, sourceIndex))) { Contract.Assert(false); } } phase2PipQueue.SetAsFinalized(); phase2PipQueue.DrainQueues(); XAssert.AreEqual(0, pips.Count); await Task.WhenAll(checkerTasks); } })); } } } }
public static SetupTask CreateFrom(XElement taskElement) { SetupTask result; switch (taskElement.Name.LocalName) { case "Group": result = new Composite(taskElement); break; case "ExtractArchive": result = new ExtractArchive(taskElement); break; case "TweakINI": result = new TweakINI(taskElement); break; case "CopyFile": result = new CopyFile(taskElement); break; case "Embedded": result = new Embedded(taskElement); break; case "Clean": result = new Clean(taskElement); break; case "CreateEmptyFolder": result = new CreateEmptyFolder(taskElement); break; case "RunProcess": result = new RunProcess(taskElement); break; case "DeleteFolder": result = new DeleteFolder(taskElement); break; case "DeleteFile": result = new DeleteFile(taskElement); break; case "MoveFolder": result = new MoveFolder(taskElement); break; case "EditFile": result = new EditFile(taskElement); break; case "Dummy": result = new Composite(); break; default: throw new NotSupportedException("Task type " + taskElement.Name.LocalName + " is not supported."); } result.xml = taskElement.ToString(); result.Id = taskElement.Attribute("Id")?.Value ?? Guid.NewGuid().ToString(); // this feels clunky, but that's fine I guess... result.WaitFor = result.WaitFor.Union(Program.Tokenize(taskElement.Attribute("WaitFor")?.Value)).ToImmutableArray(); return(result); }