/// <summary> /// Runs the URI for specified version. /// </summary> /// <param name="uri">The URI.</param> /// <param name="pid">The pid.</param> /// <param name="activeProcessFolder">The active process folder.</param> /// <param name="fileVersion">The file version.</param> /// <param name="showMessageIfNotFound">if set to <c>true</c> [show message if not found].</param> /// <returns></returns> private static bool RunForVersion(string uri, String activeProcessFolder, string fileVersion, bool showMessageIfNotFound = true) { var navPath = FindNavClient(fileVersion, activeProcessFolder); if (String.IsNullOrEmpty(navPath)) { if (showMessageIfNotFound) { MessageBox.Show("Version " + fileVersion + " of RTC was not found!", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } return(false); } var navClient = NAVClientFactory.GetObject(fileVersion); navClient.Uri = uri; navClient.Path = navPath; RunProcess(navClient); return(true); }
/// <summary> /// The URI was fired from NAV client. /// </summary> /// <param name="uri">The URI.</param> /// <param name="pid">The NAV client pid.</param> /// <param name="activeProcessFolder">The active process folder.</param> /// <param name="path">The path.</param> private static void RunFromClient(string uri, uint pid, String activeProcessFolder, String path) { var versionInfo = FileVersionInfo.GetVersionInfo(activeProcessFolder); var fileVersion = versionInfo.FileVersion; if (pid != 0) { // Only trigger GetExtendedUri if uri does not contain service tier server and instance if (uri.Contains("////")) { var newUri = NAV_URI_Extender.GetExtendedUri(new Uri(uri), pid); if (newUri != null) { uri = newUri.ToString(); } } } NAVClient2URI.UpdateVersion(uri, fileVersion); if (File.Exists(path + "Microsoft.Dynamics.Nav.Client.x86.exe")) //Runs the client from same folder as calling process { var navClient = NAVClientFactory.GetObject(fileVersion); navClient.Path = path + "Microsoft.Dynamics.Nav.Client.x86.exe"; navClient.Uri = uri; RunProcess(navClient); return; } else { if (File.Exists(path + "Microsoft.Dynamics.Nav.Client.exe")) //Runs the client from same folder as calling process { var navClient = NAVClientFactory.GetObject(fileVersion); navClient.Path = path + "Microsoft.Dynamics.Nav.Client.exe"; navClient.Uri = uri; RunProcess(navClient); return; } } RunForVersion(uri, activeProcessFolder, fileVersion); }