public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) { // Get SDK path tpath = ToolsPathInfo.ToolsRootPath; if (string.IsNullOrEmpty(tpath)) { RegistryKey kpath = Registry.CurrentUser.OpenSubKey(kname); tpath = kpath?.GetValue("ToolsPath") as string; if (!string.IsNullOrEmpty(tpath)) { tpath = tpath.Substring(16); // Remove System.String prefix } } if (string.IsNullOrEmpty(tpath)) { MessageBox.Show("Tizen SDK path is undefined"); throw new WizardCancelledException(); } PrepareListOfTemplates(); if (nativeTemplates.Count <= 0) { MessageBox.Show("Tizen SDK template list is empty. Check toolchains."); throw new WizardCancelledException(); } VsProjectHelper.Initialize(); VsProjectHelper prjHelperInstance = VsProjectHelper.GetInstance; string solutionDirectory = replacementsDictionary["$solutiondirectory$"]; destinationDirectory = replacementsDictionary["$destinationdirectory$"]; ProjectWizardViewTizenNative nWizard = new ProjectWizardViewTizenNative(replacementsDictionary["$projectname$"], solutionDirectory, nativeTemplates); if (nWizard.ShowDialog() == false) { EnvDTE80.DTE2 dte2 = VsProjectHelper.GetInstance.GetDTE2(); if (replacementsDictionary["$exclusiveproject$"] == "True") { Directory.Delete(solutionDirectory, true); dte2.ExecuteCommand("File.NewProject"); } else { Directory.Delete(destinationDirectory, true); dte2.ExecuteCommand("File.AddNewProject"); } throw new WizardCancelledException(); } // Fix values replacementsDictionary["$tizen_profile$"] = nWizard.data.profile; replacementsDictionary["$tizen_toolset$"] = nWizard.data.toolset; replacementsDictionary["$tizen_api$"] = nWizard.data.tizenApi; replacementsDictionary["$tizen_project_type$"] = nWizard.data.projectType; replacementsDictionary["$tizen_template_name$"] = nWizard.data.projectType; string safename = replacementsDictionary["$safeprojectname$"]; replacementsDictionary["$tizen_name$"] = safename.ToLower(); replacementsDictionary["$tizen_output$"] = "lib" + replacementsDictionary["$tizen_name$"] + ".so"; // At this moment project directory exists but empty, remove and regenerate it Directory.Delete(replacementsDictionary["$destinationdirectory$"]); Process process = getTizenBatProcess(); process.StartInfo.Arguments = $"create native-project -n {safename} -p {nWizard.data.profile}-{nWizard.data.tizenApi} -t {nWizard.data.projectType}"; process.StartInfo.WorkingDirectory = solutionDirectory; //debug //process.StartInfo.Arguments = " /A/K " + process.StartInfo.FileName + " " + process.StartInfo.Arguments; //process.StartInfo.FileName = "cmd.exe"; //process.StartInfo.CreateNoWindow = false; //process.StartInfo.RedirectStandardInput= false; //process.StartInfo.RedirectStandardError = false; //process.StartInfo.RedirectStandardOutput = false; process.Start(); process.WaitForExit(); int code = process.ExitCode; process.Close(); if (code != 0) { MessageBox.Show("Template generation fail for {safename}"); throw new WizardCancelledException(); } // Parse files using (StreamReader input = new StreamReader(Path.Combine(destinationDirectory, "project_def.prop"))) { string line; while ((line = input.ReadLine()) != null) { var match = keywords.Match(line); if (match.Success) { string key = match.Groups[1].Value; string value = match.Groups[2].Value; switch (key) { case "APPNAME": replacementsDictionary["$tizen_name$"] = value; break; case "type": fixType(replacementsDictionary, value); break; } } } } }
public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams) { VsProjectHelper.Initialize(); VsProjectHelper prjHelperInstance = VsProjectHelper.GetInstance; List <string> prjlist = new List <string>(); Project prj = null; prjlist.Add("Empty"); IEnumerator prjEnum = prjHelperInstance.GetProjects().GetEnumerator(); while (prjEnum.MoveNext()) { prj = (Project)prjEnum.Current; prjlist.Add(prj.Name); } ProjectWizardViewTizenCrossPlatform nWizard = new ProjectWizardViewTizenCrossPlatform(replacementsDictionary["$projectname$"], replacementsDictionary["$solutiondirectory$"], Trans_boolean(replacementsDictionary["$hasCommon$"]), Trans_boolean(replacementsDictionary["$hasMobile$"]), Trans_boolean(replacementsDictionary["$hasTV$"]), Trans_boolean(replacementsDictionary["$hasWearable$"]), Trans_boolean(replacementsDictionary["$hasSharedLib$"]), prjlist); if (nWizard.ShowDialog() == false) { EnvDTE80.DTE2 dte2 = VsProjectHelper.GetInstance.GetDTE2(); if (replacementsDictionary["$exclusiveproject$"] == "True") { Directory.Delete(replacementsDictionary["$solutiondirectory$"], true); dte2.ExecuteCommand("File.NewProject"); } else { Directory.Delete(replacementsDictionary["$destinationdirectory$"], true); dte2.ExecuteCommand("File.AddNewProject"); } throw new WizardCancelledException(); } else { replacementsDictionary["$select_common$"] = nWizard.manifestData.Select_common.ToString().ToLower(); replacementsDictionary["$select_mobile$"] = nWizard.manifestData.Select_mobile.ToString().ToLower(); replacementsDictionary["$select_tv$"] = nWizard.manifestData.Select_tv.ToString().ToLower(); replacementsDictionary["$select_wearable$"] = nWizard.manifestData.Select_wearable.ToString().ToLower(); if (nWizard.manifestData.Shared_library) { replacementsDictionary["$hasSharedLib$"] = "true"; } else { replacementsDictionary["$hasSharedLib$"] = nWizard.manifestData.Selected_project_name; } } // Project Name change int idx = replacementsDictionary["$safeprojectname$"].IndexOf("Tizen"); string prjName = replacementsDictionary["$safeprojectname$"]; replacementsDictionary["$namespace$"] = prjName; replacementsDictionary["$lib_prjName$"] = prjName; if (idx != -1)// && Trans_boolean(replacementsDictionary["$hasSharedLib$"])) { if (replacementsDictionary["$hasSharedLib$"] != "true") { replacementsDictionary["$common_prjName$"] = prjName; } else { replacementsDictionary["$common_prjName$"] = prjName + ".Tizen"; } replacementsDictionary["$mobile_prjName$"] = prjName + ".Mobile"; replacementsDictionary["$tv_prjName$"] = prjName + ".TV"; replacementsDictionary["$wearable_prjName$"] = prjName + ".Wearable"; } else { replacementsDictionary["$common_prjName$"] = prjName + ".Tizen"; replacementsDictionary["$mobile_prjName$"] = prjName + ".Tizen.Mobile"; replacementsDictionary["$tv_prjName$"] = prjName + ".Tizen.TV"; replacementsDictionary["$wearable_prjName$"] = prjName + ".Tizen.Wearable"; } }