diff --git a/NxVersion/Form1.cs b/NxVersion/Form1.cs index 1d80480..16715f1 100644 --- a/NxVersion/Form1.cs +++ b/NxVersion/Form1.cs @@ -44,107 +44,52 @@ namespace NxVersion private void Start(string ugiiBaseDir) { - ShowInfo(ugiiBaseDir); + labelVerInfo.Text = ""; + + if (Directory.Exists(ugiiBaseDir)) + { + ShowInfo(ugiiBaseDir); + } + else + { + labelVerInfo.Text = "ACHTUNG:\nDas angegebene NX Installationsverzeichnis ist ungültig!"; + } } private void ShowInfo(string ugiiBaseDir) { try { - var nxVersion = new NxVersion(ugiiBaseDir); + NxVersion nxVer1 = new NxVersion(); //NX Version initialisieren + NxVersion nxVer2 = nxVer1.GetNxVersion(ugiiBaseDir); //Informationen über diese Version (C:\\CAD\\NX10) abrufen - labelVerInfo.Text = String.Concat("UGII_BASE_DIR: ", ugiiBaseDir, "\n", "UGII_ROOT_DIR: ", UgiiRootDir, "\n\n"); + //Werte zuordnen + string text = ""; + text += "UGII_BASE_DIR: " + ugiiBaseDir; + text += "\nUGII_ROOT_DIR: " + ugiiBaseDir + "\\UGII\\\n"; - if (nxVersion.PostNX12) + text += "\nNX Version: " + nxVer2.NXversion; + text += "\nMaintenance Release: " + nxVer2.MaintenanceRelease; + text += "\nUGII_PRODUCT_NAME: " + nxVer2.UgiiProductName; + text += "\nUGII_MAJOR_VERSION: " + nxVer2.UgiiMajorVersion; + text += "\nUGII_MINOR_VERSION: " + nxVer2.UgiiMinorVersion; + text += "\nUGII_SUBMINOR_VERSION: " + nxVer2.UgiiSubminorVersion; + text += "\nNX Phase: " + nxVer2.NXphase; + text += "\nMaintenance Pack: " + nxVer2.MaintenancePack; + text += "\nMaintenance Pack Number: " + nxVer2.MaintenancePackNumber; + text += "\nNX_VERSION_STRING: " + nxVer2.NxVersionString; + text += "\nNX_MAJOR_STRING: " + nxVer2.NxMajorVersionString; + text += "\nNX_MINOR_STRING: " + nxVer2.NxMinorVersionString; + text += "\nNX_SUBMINOR_STRING: " + nxVer2.NxSubminorVersionString; + text += "\nNX_PHASE_STRING: " + nxVer2.NxPhaseString; + text += "\nUGII_FULL_VERSION: " + nxVer2.UgiiFullVersion; + text += "\nUGII_VERSION: " + nxVer2.UgiiVersion; + if (nxVer2.PostNX12) { - //Nach NX12 - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "Version: ", nxVersion.UgiiProductName, " ", nxVersion.UgiiMajorVersion, ".", nxVersion.UgiiMinorVersion); + text += "\nNX_COMPATIBLE_BASE_RELEASE_VERSION: " + nxVer2.NxCompatibleBaseReleaseVersion; } - else - { - //Vor NX - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "Version: ", nxVersion.UgiiProductName, " ", nxVersion.UgiiMajorVersion, ".", nxVersion.UgiiMinorVersion, ".", nxVersion.UgiiSubminorVersion, ".", nxVersion.NXphase, " ", nxVersion.MaintenancePack); - } - - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\nPostNX12: ", nxVersion.PostNX12.ToString()); - - var nxVersion1 = new NxVersion(); - nxVersion1.UgiiProductName = "NX"; - nxVersion1.UgiiMajorVersion = 1847; - nxVersion1.UgiiMinorVersion = 2400; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\n\nVergleich mit NX 1847.2400 ergibt: ", nxVersion.Compare(nxVersion1)); - - var nxVersion2 = new NxVersion(); - nxVersion2.UgiiProductName = "NX"; - nxVersion2.UgiiMajorVersion = 1847; - nxVersion2.UgiiMinorVersion = 1200; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 1847.1200 ergibt: ", nxVersion.Compare(nxVersion2)); - - var nxVersion3 = new NxVersion(); - nxVersion3.UgiiProductName = "NX"; - nxVersion3.UgiiMajorVersion = 1847; - nxVersion3.UgiiMinorVersion = 4800; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 1847.4800 ergibt: ", nxVersion.Compare(nxVersion3)); - - var nxVersion4 = new NxVersion(); - nxVersion4.UgiiProductName = "NX"; - nxVersion4.UgiiMajorVersion = 10; - nxVersion4.UgiiMinorVersion = 0; - nxVersion4.UgiiSubminorVersion = 3; - nxVersion4.NXphase = 5; - nxVersion4.MaintenancePack = "MP10"; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 10.0.3.5 MP10 ergibt: ", nxVersion.Compare(nxVersion4)); - - var nxVersion5 = new NxVersion(); - nxVersion5.UgiiProductName = "NX"; - nxVersion5.UgiiMajorVersion = 10; - nxVersion5.UgiiMinorVersion = 0; - nxVersion5.UgiiSubminorVersion = 3; - nxVersion5.NXphase = 5; - nxVersion5.MaintenancePack = "MP19"; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 10.0.3.5 MP19 ergibt: ", nxVersion.Compare(nxVersion5)); - - var nxVersion6 = new NxVersion(); - nxVersion6.UgiiProductName = "NX"; - nxVersion6.UgiiMajorVersion = 10; - nxVersion6.UgiiMinorVersion = 0; - nxVersion6.UgiiSubminorVersion = 3; - nxVersion6.NXphase = 6; - nxVersion6.MaintenancePack = "MP19"; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 10.0.3.6 MP19 ergibt: ", nxVersion.Compare(nxVersion6)); - - var nxVersion7 = new NxVersion(); - nxVersion7.UgiiProductName = "NX"; - nxVersion7.UgiiMajorVersion = 12; - nxVersion7.UgiiMinorVersion = 4; - nxVersion7.UgiiSubminorVersion = 2; - nxVersion7.NXphase = 1; - nxVersion7.MaintenancePack = "MP2"; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 12.4.2.1 MP2 ergibt: ", nxVersion.Compare(nxVersion7)); - - var nxVersion8 = new NxVersion(); - nxVersion8.UgiiProductName = "NX"; - nxVersion8.UgiiMajorVersion = 12; - nxVersion8.UgiiMinorVersion = 0; - nxVersion8.UgiiSubminorVersion = 2; - nxVersion8.NXphase = 9; - nxVersion8.MaintenancePack = "MP5"; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 12.0.2.9 MP5 ergibt: ", nxVersion.Compare(nxVersion8)); - - var nxVersion9 = new NxVersion(); - nxVersion9.UgiiProductName = "NX"; - nxVersion9.UgiiMajorVersion = 12; - nxVersion9.UgiiMinorVersion = 4; - nxVersion9.UgiiSubminorVersion = 2; - nxVersion9.NXphase = 1; - nxVersion9.MaintenancePack = "MP1"; - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 12.4.2.1 MP1 ergibt: ", nxVersion.Compare(nxVersion9)); - - var nxVersion10 = new NxVersion(); - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 10.0.3.5 MP19 ergibt: ", nxVersion.Compare("NX", 10, 0, 3, 5, 19)); - - var nxVersion11 = new NxVersion(); - labelVerInfo.Text = String.Concat(labelVerInfo.Text, "\n\nVergleich mit NX 12.0.2.9 MP5 ergibt: ", nxVersion.Compare("NX", 12, 0, 2, 9, 5)); + text += "\nPostNX12: " + nxVer2.PostNX12; + labelVerInfo.Text = text; //Werte der installierten NX10 Version } catch (Exception ex) { diff --git a/NxVersion/NxVersion.cs b/NxVersion/NxVersion.cs index c6f9612..f7fedf2 100644 --- a/NxVersion/NxVersion.cs +++ b/NxVersion/NxVersion.cs @@ -1,11 +1,54 @@ using System; using System.Diagnostics; using System.IO; +using System.Reflection; +using System.Windows.Forms; namespace NxVersion { class NxVersion { + public NxVersion() + { + } + + public NxVersion(string ugiiBaseDir) + { + if (Directory.Exists(ugiiBaseDir)) + { + UgiiBaseDir = ugiiBaseDir; + UgiiRootDir = String.Concat(UgiiBaseDir, "\\UGII\\"); + } + else + { + throw new DirectoryNotFoundException(); + } + + string nxVersionNo = ReadNxEnvValues(UgiiRootDir, "-n").Replace("\r\n", ""); + + if (Convert.ToInt32(ugiiBaseDir.ToLower().Remove(0, ugiiBaseDir.LastIndexOf("\\") + 3)) <= 12) + { + //Bis einschliesslich NX12 + string tempPatchText = ReadNxEnvValues(UgiiRootDir, "-m"); + tempPatchText = tempPatchText.Remove(tempPatchText.IndexOf(",")); + + string nxVerString = ReadNxEnvValues(ugiiBaseDir + "\\UGII\\", "-v"); + nxVerString = nxVerString.Remove(nxVerString.IndexOf("\r")); + string nxCompBaseRelVer = ReadNxEnvValues(ugiiBaseDir + "\\UGII\\", "-f"); + if (!String.IsNullOrEmpty(nxCompBaseRelVer)) + { + nxCompBaseRelVer = nxCompBaseRelVer.Remove(nxCompBaseRelVer.IndexOf("\r")); + } + + AlignCode(nxVersionNo, tempPatchText, nxVerString, nxCompBaseRelVer); + } + else + { + //Nach NX12 + AlignCode(nxVersionNo); + } + } + #region Base value /// /// UGII_BASE_DIR. E.g.: C:\Program Files\Siemens\NX 12.0 @@ -112,75 +155,19 @@ namespace NxVersion /// Maintenance Pack Number. E.g.: 4 of NX 10.0.3.5 MP4 /// public int MaintenancePackNumber { get; set; } + + /// + /// NX compatible base release version. E.g.: 1953 of 1973 + /// + public string NxCompatibleBaseReleaseVersion { get; set; } #endregion - public NxVersion() - { } - - public NxVersion(string ugiiBaseDir) - { - if (Directory.Exists(ugiiBaseDir)) - { - UgiiBaseDir = ugiiBaseDir; - UgiiRootDir = String.Concat(UgiiBaseDir, "\\UGII\\"); - } - else - { - throw new DirectoryNotFoundException(); - } - - string nxVersionNo = ReadNxEnvValues(UgiiRootDir, "-n").Replace("\r\n", ""); - - if (IsPostNX12(UgiiRootDir)) - { - //Nach NX12 - AlignCode(nxVersionNo); - } - else - { - //Bis einschliesslich NX12 - string tempPatchText = ReadNxEnvValues(UgiiRootDir, "-m"); - tempPatchText = tempPatchText.Remove(tempPatchText.IndexOf(",")); - - AlignCode(nxVersionNo, tempPatchText); - } - } - - #region CommonMethodes - private bool IsPostNX12(string ugiiRootDir) - { - if (NxVersionNumber(ugiiRootDir) <= 12) - { - //Bis einschliesslich NX12 - PostNX12 = false; - } - else - { - //Nach NX12 - PostNX12 = true; - } - return PostNX12; - } - - private bool IsPostNX12(NxVersion version) - { - if (version.UgiiMajorVersion <= 12) - { - //Bis einschliesslich NX12 - PostNX12 = false; - } - else - { - //Nach NX12 - PostNX12 = true; - } - return PostNX12; - } + #region Common Private Methodes private int NxVersionNumber(string ugiiRootDir) { string nxVersion = ReadNxEnvValues(UgiiRootDir, "-n").Replace("\r\n", ""); - nxVersion = nxVersion.Remove(nxVersion.IndexOf(".")).Replace("NX ",""); + nxVersion = nxVersion.Remove(nxVersion.IndexOf(".")).Replace("NX ", ""); return Convert.ToInt16(nxVersion); } @@ -205,7 +192,7 @@ namespace NxVersion ExecutablesExists(ugii_base_dir); //Wenn 'ugii_base_dir' existiert, dann die Werte ermitteln} - return ProcessOutput(ugii_base_dir, arguments); + return ProcessOutput(String.Concat(ugii_base_dir, "\\UGII\\env_print.exe"), arguments); } private void ExecutablesExists(string ugii_base_dir) @@ -213,7 +200,7 @@ namespace NxVersion //Wenn eine der drei Dateien nicht existiert, dann eine Exception werfen if (!File.Exists(String.Concat(ugii_base_dir, "\\UGII\\env_print.exe"))) throw new NoEnvPrintExeException("Unable to find EnvPrint.exe"); //Nur vor 'NX 1847' ausführen, weil es nur vorher diese Biblithek gibt - if (!ugii_base_dir.ToLower().Contains("nx 1847") & !ugii_base_dir.ToLower().Contains("beta") & ugii_base_dir.Remove(0, ugii_base_dir.LastIndexOf("\\") + 1).Length != 2) + if (Convert.ToInt32(ugii_base_dir.ToLower().Remove(0, ugii_base_dir.LastIndexOf("\\") + 3)) <= 12 & !ugii_base_dir.ToLower().Contains("beta") & ugii_base_dir.Remove(0, ugii_base_dir.LastIndexOf("\\") + 1).Length != 2) { if (!File.Exists(String.Concat(ugii_base_dir, "\\UGII\\libpatch.dll")) & !File.Exists(String.Concat(ugii_base_dir, "\\NXBIN\\libpatch.dll"))) throw new NoLibPatchDllException("Unable to find LibPatch.dll"); } @@ -264,7 +251,7 @@ namespace NxVersion UgiiMinorVersion = Convert.ToInt32(versionSegments[2]); //Minor Version } - private void AlignCode(string nxVersionNo, string tempPatchText) + private void AlignCode(string nxVersionNo, string tempPatchText, string nxVerString, string nxCompBaseRelVer) { //NX Version zerlegen string[] versionSegments = new string[6]; @@ -279,23 +266,50 @@ namespace NxVersion versionSegments[5] = SeperatePatchText(tempPatchText); //Werte zuordnen - NXpatch = String.Concat(versionSegments[0], " ", versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4], " ", versionSegments[5]); //NX Patch - NXversion = String.Concat(versionSegments[0], " ", versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4]); //NX Version - MaintenanceRelease = String.Concat(versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4]); //Maintenance Release - UgiiProductName = versionSegments[0]; //Produkt Name - UgiiMajorVersion = Convert.ToInt32(versionSegments[1]); //Major Version - UgiiMinorVersion = Convert.ToInt32(versionSegments[2]); //Minor Version - UgiiSubminorVersion = Convert.ToInt32(versionSegments[3]); //Subminor Version - NXphase = Convert.ToInt32(versionSegments[4]); //NX Phase - MaintenancePack = versionSegments[5]; //Maintenance Pack - MaintenancePackNumber = Convert.ToInt32(versionSegments[5].Replace("MP", "")); - NxVersionString = String.Concat("V", (Convert.ToInt32(versionSegments[1]) + 18).ToString(), ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4]); //NX Version String - NxMajorVersionString = String.Concat("V", (Convert.ToInt32(versionSegments[1]) + 18).ToString()); //Major Version String - NxMinorVersionString = versionSegments[2].ToString(); //Minor Version String - NxSubminorVersionString = versionSegments[3].ToString(); //Subminor Version String - NxPhaseString = versionSegments[4].ToString(); //NX Phase String - UgiiFullVersion = String.Concat("v", versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4]); //NX Full Version - UgiiVersion = String.Concat("v", versionSegments[1]); + if (Convert.ToInt32(versionSegments[1]) <= 12) + { + NXpatch = String.Concat(versionSegments[0], " ", versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4], " ", versionSegments[5]); //NX Patch + NXversion = String.Concat(versionSegments[0], " ", versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4]); //NX Version + MaintenanceRelease = String.Concat(versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4]); //Maintenance Release + UgiiProductName = versionSegments[0]; //Produkt Name + UgiiMajorVersion = Convert.ToInt32(versionSegments[1]); //Major Version + UgiiMinorVersion = Convert.ToInt32(versionSegments[2]); //Minor Version + UgiiSubminorVersion = Convert.ToInt32(versionSegments[3]); //Subminor Version + NXphase = Convert.ToInt32(versionSegments[4]); //NX Phase + MaintenancePack = versionSegments[5]; //Maintenance Pack + MaintenancePackNumber = Convert.ToInt32(versionSegments[5].Replace("MP", "")); + NxVersionString = String.Concat("V", (Convert.ToInt32(versionSegments[1]) + 18).ToString(), ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4]); //NX Version String + NxMajorVersionString = String.Concat("V", (Convert.ToInt32(versionSegments[1]) + 18).ToString()); //Major Version String + NxMinorVersionString = versionSegments[2].ToString(); //Minor Version String + NxSubminorVersionString = versionSegments[3].ToString(); //Subminor Version String + NxPhaseString = versionSegments[4].ToString(); //NX Phase String + UgiiFullVersion = String.Concat("v", versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4]); //NX Full Version + UgiiVersion = String.Concat("v", versionSegments[1]); + PostNX12 = false; + } + else + { + NXpatch = String.Concat(versionSegments[0], " ", versionSegments[1], ".", versionSegments[2], ".", versionSegments[3], ".", versionSegments[4], " ", versionSegments[5]); //NX Patch + NXversion = String.Concat(versionSegments[0], " ", versionSegments[1]); //NX Version + MaintenanceRelease = String.Concat(versionSegments[1], ".", versionSegments[2]); //Maintenance Release + UgiiProductName = versionSegments[0]; //Produkt Name + UgiiMajorVersion = Convert.ToInt32(versionSegments[1]); //Major Version + UgiiMinorVersion = Convert.ToInt32(versionSegments[3]); //Minor Version + UgiiSubminorVersion = Convert.ToInt32(versionSegments[4]); //Subminor Version + NXphase = Convert.ToInt32(versionSegments[2]); //NX Phase + MaintenancePack = versionSegments[5]; //Maintenance Pack + MaintenancePackNumber = Convert.ToInt32(versionSegments[5].Replace("MP", "")); + NxVersionString = nxVerString; //NX Version String + NxMajorVersionString = String.Concat("V", (Convert.ToInt32(versionSegments[1])).ToString()); //Major Version String + NxMinorVersionString = versionSegments[2].ToString(); //Minor Version String + NxSubminorVersionString = versionSegments[3].ToString(); //Subminor Version String + NxPhaseString = versionSegments[4].ToString(); //NX Phase String + UgiiFullVersion = String.Concat("v", versionSegments[1], ".", versionSegments[3], ".", versionSegments[4], ".", versionSegments[2]); //NX Full Version + UgiiVersion = String.Concat("v", versionSegments[1]); + NxCompatibleBaseReleaseVersion = nxCompBaseRelVer; + PostNX12 = true; + } + } private void AlignCode(string ugiiProductName, int majorVersion, int minorVersion, int subminorVersion, int phase, int mp) @@ -318,6 +332,7 @@ namespace NxVersion NxPhaseString = phase.ToString(); //NX Phase String UgiiFullVersion = String.Concat("v", majorVersion, ".", minorVersion, ".", subminorVersion, ".", phase); //NX Full Version UgiiVersion = String.Concat("v", majorVersion); + PostNX12 = !(UgiiMajorVersion <= 12); } private string[] SeperateVersionCode(string versionNumber) @@ -405,6 +420,10 @@ namespace NxVersion if (patchText.Contains("MP")) { patchText = patchText.Remove(0, patchText.IndexOf("MP")); //Alles vor MP abschneiden + if (patchText.Contains(",")) + { + patchText = patchText.Remove(patchText.IndexOf(",")); + } return patchText; } else @@ -417,72 +436,218 @@ namespace NxVersion { NxVersion nxVersion = new NxVersion(); - nxVersion.NXpatch = NXpatch; //NX Patch. E.g.: NX 10.0.3.5 MP4 - nxVersion.NXversion = NXversion; //NX Version. E.g.: NX 10.0.3.5 - nxVersion.MaintenanceRelease = MaintenanceRelease; //Maintenance Release. E.g.: 10.0.3.5 of NX 10.0.3.5 MP4 - nxVersion.UgiiProductName = UgiiProductName; //UGII_PRODUCT_NAME. E.g.: NX of NX 10.0.3.5 - nxVersion.UgiiMajorVersion = UgiiMajorVersion; //UGII_MAJOR_VERSION. E.g.: 10 of NX 10.0.3.5 - nxVersion.UgiiMinorVersion = UgiiMinorVersion; //UGII_MINOR_VERSION. E.g.: 0 of NX 10.0.3.5 - nxVersion.UgiiSubminorVersion = UgiiSubminorVersion; //UGII_SUBMINOR_VERSION. E.g.: 3 of NX 10.0.3.5 - nxVersion.NXphase = NXphase; //NX Phase. E.g.: 5 of NX 10.0.3. - nxVersion.MaintenancePack = MaintenancePack; //Maintenance Pack. E.g.: MP4 of NX 10.0.3.5 MP4 - nxVersion.MaintenancePackNumber = MaintenancePackNumber; //Maintenance Pack Number. E.g.: 4 of NX 10.0.3.5 MP4 - nxVersion.NxVersionString = NxVersionString; //NX_VERSION_STRING. E.g.: V28.0.3.5 instead of NX 10.0.3.5 MP4 - nxVersion.NxMajorVersionString = NxMajorVersionString; //NX_MAJOR_STRING. E.g.: V28 of V28.0.3.5 - nxVersion.NxMinorVersionString = NxMinorVersionString; //NX_MINOR_STRING. E.g.: 0 of V28.0.3.5 - nxVersion.NxSubminorVersionString = NxSubminorVersionString; //NX_SUBMINOR_STRING. E.g.: 3 of V28.0.3.5 - nxVersion.NxPhaseString = NxPhaseString; //NX_PHASE_STRING. E.g.: 5 of V28.0.3.5 - nxVersion.UgiiFullVersion = UgiiFullVersion; //UGII_FULL_VERSION. E.g.: v10.0.3.5 instead of NX 10.0.3.5 - nxVersion.UgiiVersion = UgiiVersion; //UGII_VERSION. E.g.: v10 of v10.0.3.5 + if (UgiiMajorVersion <= 12) + { + nxVersion.NXpatch = NXpatch; //NX Patch. E.g.: NX 10.0.3.5 MP4 + nxVersion.NXversion = NXversion; //NX Version. E.g.: NX 10.0.3.5 or 1973 + nxVersion.MaintenanceRelease = MaintenanceRelease; //Maintenance Release. E.g.: 10.0.3.5 of NX 10.0.3.5 MP4 or 1973.3701 of 1973.0.0.3701 + nxVersion.UgiiProductName = UgiiProductName; //UGII_PRODUCT_NAME. E.g.: NX of NX 10.0.3.5 or NX of 1973.3701 + nxVersion.UgiiMajorVersion = UgiiMajorVersion; //UGII_MAJOR_VERSION. E.g.: 10 of NX 10.0.3.5 or 1973 of 1973.0.03701 + nxVersion.UgiiMinorVersion = UgiiMinorVersion; //UGII_MINOR_VERSION. E.g.: 0 of NX 10.0.3.5 or 0 of 1973.0.0.3701 + nxVersion.UgiiSubminorVersion = UgiiSubminorVersion; //UGII_SUBMINOR_VERSION. E.g.: 3 of NX 10.0.3.5 or 0 of 1973.0.0.3701 + nxVersion.NXphase = NXphase; //NX Phase. E.g.: 5 of NX 10.0.3.5 or 3701 of 1973.0.0.3701 + nxVersion.MaintenancePack = MaintenancePack; //Maintenance Pack. E.g.: MP4 of NX 10.0.3.5 MP4 + nxVersion.MaintenancePackNumber = MaintenancePackNumber; //Maintenance Pack Number. E.g.: 4 of NX 10.0.3.5 MP4 + nxVersion.NxVersionString = NxVersionString; //NX_VERSION_STRING. E.g.: V28.0.3.5 instead of NX 10.0.3.5 MP4 + nxVersion.NxMajorVersionString = NxMajorVersionString; //NX_MAJOR_STRING. E.g.: V28 of V28.0.3.5 + nxVersion.NxMinorVersionString = NxMinorVersionString; //NX_MINOR_STRING. E.g.: 0 of V28.0.3.5 + nxVersion.NxSubminorVersionString = NxSubminorVersionString; //NX_SUBMINOR_STRING. E.g.: 3 of V28.0.3.5 + nxVersion.NxPhaseString = NxPhaseString; //NX_PHASE_STRING. E.g.: 5 of V28.0.3.5 + nxVersion.UgiiFullVersion = UgiiFullVersion; //UGII_FULL_VERSION. E.g.: v10.0.3.5 instead of NX 10.0.3.5 or v1973.3701 + nxVersion.UgiiVersion = UgiiVersion; //UGII_VERSION. E.g.: v10 of v10.0.3.5 + nxVersion.PostNX12 = PostNX12; + } + else + { + nxVersion.NXpatch = NXpatch; //NX Patch. E.g.: NX 10.0.3.5 MP4 + nxVersion.NXversion = NXversion; //NX Version. E.g.: NX 10.0.3.5 + nxVersion.MaintenanceRelease = MaintenanceRelease; //Maintenance Release. E.g.: 10.0.3.5 of NX 10.0.3.5 MP4 + nxVersion.UgiiProductName = UgiiProductName; //UGII_PRODUCT_NAME. E.g.: NX of NX 10.0.3.5 + nxVersion.UgiiMajorVersion = UgiiMajorVersion; //UGII_MAJOR_VERSION. E.g.: 10 of NX 10.0.3.5 + nxVersion.UgiiMinorVersion = UgiiMinorVersion; //UGII_MINOR_VERSION. E.g.: 0 of NX 10.0.3.5 + nxVersion.UgiiSubminorVersion = UgiiSubminorVersion; //UGII_SUBMINOR_VERSION. E.g.: 3 of NX 10.0.3.5 + nxVersion.NXphase = NXphase; //NX Phase. E.g.: 5 of NX 10.0.3. + nxVersion.MaintenancePack = MaintenancePack; //Maintenance Pack. E.g.: MP4 of NX 10.0.3.5 MP4 + nxVersion.MaintenancePackNumber = MaintenancePackNumber; //Maintenance Pack Number. E.g.: 4 of NX 10.0.3.5 MP4 + nxVersion.NxVersionString = NxVersionString; //NX_VERSION_STRING. E.g.: V28.0.3.5 instead of NX 10.0.3.5 MP4 + nxVersion.NxMajorVersionString = NxMajorVersionString; //NX_MAJOR_STRING. E.g.: V28 of V28.0.3.5 + nxVersion.NxMinorVersionString = NxMinorVersionString; //NX_MINOR_STRING. E.g.: 0 of V28.0.3.5 + nxVersion.NxSubminorVersionString = NxSubminorVersionString; //NX_SUBMINOR_STRING. E.g.: 3 of V28.0.3.5 + nxVersion.NxPhaseString = NxPhaseString; //NX_PHASE_STRING. E.g.: 5 of V28.0.3.5 + nxVersion.UgiiFullVersion = UgiiFullVersion; //UGII_FULL_VERSION. E.g.: v10.0.3.5 instead of NX 10.0.3.5 + nxVersion.UgiiVersion = UgiiVersion; //UGII_VERSION. E.g.: v10 of v10.0.3.5 + nxVersion.NxCompatibleBaseReleaseVersion = NxCompatibleBaseReleaseVersion; //NX_COMPATIBLE_BASE_RELEASE_VERSION. E.g.: NX 1953 + nxVersion.PostNX12 = PostNX12; + } + return nxVersion; } - - ///// - // /// Assign values to a NX Version. - // /// - // /// A valid UGII_BASE_DIR. - // /// A full defined NX Version. - //private NxVersion GetNxVersion(string ugii_base_dir) - //{ - // NxVersion nxVersion = new NxVersion(); - // string tempVersion = ""; - // string tempPatchText = ""; + private NxVersion AssignVersionSegments(string[] versionSegments) + { + NxVersion nxVersion = new NxVersion(); + + // NX_VERSION. E.g.: NX 10.0.3.5 + nxVersion.NXversion = versionSegments[0] + " " + versionSegments[1] + "." + versionSegments[2] + "." + versionSegments[3] + "." + versionSegments[4]; + NXversion = nxVersion.NXversion; + + // NX_PHASE. E.g.: 5 of NX 10.0.3.5 + nxVersion.NXphase = Convert.ToInt16(versionSegments[4]); + NXphase = nxVersion.NXphase; + + // NX_PATCH. E.g.: NX 10.0.3.5 MP4 + nxVersion.NXpatch = nxVersion.NXversion + " " + versionSegments[5]; + NXpatch = nxVersion.NXpatch; - // if (Directory.Exists(ugii_base_dir)) - // { - // tempVersion = ReadProcessOutput(ugii_base_dir, "-n"); //Prozess mit env_print.exe -n aufrufen - // tempPatchText = ReadProcessOutput(ugii_base_dir, "-m"); //Prozess mit env_print.exe -m aufrufen + // UGII_PRODUCT_NAME. E.g.: NX of NX 10.0.3.5 + nxVersion.UgiiProductName = versionSegments[0]; + UgiiProductName = nxVersion.UgiiProductName; - // //Wert auflösen und in den Variablen ablegen - // AlignCode(tempVersion, tempPatchText); + // UGII_VERSION. E.g.: v10 of NX 10.0.3.5 + nxVersion.UgiiVersion = "v" + versionSegments[1]; + UgiiVersion = nxVersion.UgiiVersion; - // return AssignVersion(); //Werte zuordnen - // } - // else - // { - // return null; //Wenn 'ugii_base_dir' nicht existiert, dann 'null' zurückgeben - // } - //} + // UGII_FULL_VERSION. E.g.: v10.0.3.5 + nxVersion.UgiiFullVersion = "v" + versionSegments[1] + "." + versionSegments[2] + "." + versionSegments[3] + "." + versionSegments[4]; + UgiiFullVersion = nxVersion.UgiiFullVersion; - ///// - ///// Assign values to a NX Version. - ///// - ///// A valid product name. E.g.: NX - ///// A valid UGII_MAJOR_VERSION. E.g.: 10 of NX 10.0.3.5 - ///// A valid UGII_MINOR_VERSION. E.g.: 0 of NX 10.0.3.5 - ///// A full defined NX Version. - //private NxVersion GetNxVersion(string ugiiProductName, int majorVersion, int minorVersion) - //{ - // NxVersion nxVersion = new NxVersion(); + // UGII_MAJOR_VERSION. E.g.: 10 of NX 10.0.3.5 + nxVersion.UgiiMajorVersion = Convert.ToInt16(versionSegments[1]); + UgiiMajorVersion = nxVersion.UgiiMajorVersion; - // //Wert auflösen und in den Variablen ablegen - // AlignCode(ugiiProductName, majorVersion, minorVersion, 0, 0, 0); + // UGII_MINOR_VERSION. E.g.: 0 of NX 10.0.3.5 + nxVersion.UgiiMinorVersion = Convert.ToInt16(versionSegments[2]); + UgiiMinorVersion = nxVersion.UgiiMinorVersion; - // return AssignVersion(); //Werte zuordnen - //} + // UGII_SUBMINOR_VERSION. E.g.: 3 of NX 10.0.3.5 + nxVersion.UgiiSubminorVersion = Convert.ToInt16(versionSegments[3]); + UgiiSubminorVersion = nxVersion.UgiiSubminorVersion; + + + // NX_VERSION_STRING. E.g.: V28.0.3.5 instead of NX 10.0.3.5 MP4 + nxVersion.NxVersionString = "V" + (Convert.ToInt16(versionSegments[1]) + 18).ToString() + "." + versionSegments[2] + "." + versionSegments[3] + "." + versionSegments[4]; + NxVersionString = nxVersion.NxVersionString; + + // NX_MAJOR_STRING. E.g.: V28 of V28.0.3.5 + nxVersion.NxMajorVersionString = "V" + (Convert.ToInt16(versionSegments[1]) + 18).ToString(); + NxMajorVersionString = nxVersion.NxMajorVersionString; + + // NX_MINOR_STRING. E.g.: 0 of V28.0.3.5 + nxVersion.NxMinorVersionString = versionSegments[2]; + NxMinorVersionString = nxVersion.NxMinorVersionString; + + // NX_SUBMINOR_STRING. E.g.: 3 of V28.0.3.5 + nxVersion.NxSubminorVersionString = versionSegments[3]; + NxSubminorVersionString = nxVersion.NxSubminorVersionString; + + // NX_PHASE_STRING. E.g.: 5 of V28.0.3.5 + nxVersion.NxPhaseString = versionSegments[4]; + NxPhaseString = nxVersion.NxPhaseString; + + + // Maintenance Release. E.g.: 10.0.3.5 of NX 10.0.3.5 MP4 + nxVersion.MaintenanceRelease = versionSegments[1] + "." + versionSegments[2] + "." + versionSegments[3] + "." + versionSegments[4]; + MaintenanceRelease = nxVersion.MaintenanceRelease; + + // Maintenance Pack. E.g.: MP4 of NX 10.0.3.5 MP4 + nxVersion.MaintenancePack = versionSegments[5]; + MaintenancePack = nxVersion.MaintenancePack; + + // Maintenance Pack Number. E.g.: 4 of NX 10.0.3.5 MP4 + nxVersion.MaintenancePackNumber = Convert.ToInt16(nxVersion.MaintenancePack.Remove(0, nxVersion.MaintenancePack.IndexOf("MP") + 2)); + MaintenancePackNumber = nxVersion.MaintenancePackNumber; + + // Post NX12. E.g.: true + nxVersion.PostNX12 = PostNX12; + + return nxVersion; + } + #endregion + + #region Common Public Methodes + /// + /// Converts a NxPatch string to NxVersion + /// + /// A valid NxPatch. E.g.: NX 10.0.3.5 MP4 + /// + public NxVersion ConvertStringPatchToNxVersionPatch(string nxPatch) + { + return AssignVersionSegments(SeperateVersionCode(nxPatch)); + } + + /// + /// Assign values to a NX Version. + /// + /// A valid UGII_BASE_DIR. + /// A full defined NX Version. + public NxVersion GetNxVersion(string ugii_base_dir) + { + NxVersion nxVersion = new NxVersion(); + + string tempVersion = ""; + string tempPatchText = ""; + + + if (Directory.Exists(ugii_base_dir)) + { + tempVersion = ReadProcessOutput(ugii_base_dir, "-n"); //Prozess mit env_print.exe -n aufrufen + tempPatchText = ReadProcessOutput(ugii_base_dir, "-m"); //Prozess mit env_print.exe -m aufrufen + + string nxVerString = ReadNxEnvValues(ugii_base_dir + "\\UGII\\", "-v"); + nxVerString = nxVerString.Remove(nxVerString.IndexOf("\r")); + string nxCompBaseRelVer = ReadNxEnvValues(ugii_base_dir + "\\UGII\\", "-f"); + if (!String.IsNullOrEmpty(nxCompBaseRelVer)) + { + nxCompBaseRelVer = nxCompBaseRelVer.Remove(nxCompBaseRelVer.IndexOf("\r")); + } + + //Wert auflösen und in den Variablen ablegen + AlignCode(tempVersion, tempPatchText, nxVerString, nxCompBaseRelVer); + + return AssignVersion(); //Werte zuordnen + } + else + { + return null; //Wenn 'ugii_base_dir' nicht existiert, dann 'null' zurückgeben + } + } + + /// + /// Assign values to a NX Version. + /// + /// A valid product name. E.g.: NX + /// A valid UGII_MAJOR_VERSION. E.g.: 10 of NX 10.0.3.5 + /// A valid UGII_MINOR_VERSION. E.g.: 0 of NX 10.0.3.5 + /// A full defined NX Version. + public NxVersion GetNxVersion(string ugiiProductName, int majorVersion, int minorVersion) + { + NxVersion nxVersion = new NxVersion(); + + //Wert auflösen und in den Variablen ablegen + AlignCode(ugiiProductName, majorVersion, minorVersion, 0, 0, 0); + + return AssignVersion(); //Werte zuordnen + } + + /// + /// Assign values to a NX Version. + /// + /// A valid product name. E.g.: NX + /// A valid UGII_MAJOR_VERSION. E.g.: 10 of NX 10.0.3.5 + /// A valid UGII_MINOR_VERSION. E.g.: 0 of NX 10.0.3.5 + /// A valid UGII_SUBMINOR_VERSION. E.g.: 3 of NX 10.0.3.5 + /// A full defined NX Version. + public NxVersion GetNxVersion(string ugiiProductName, int majorVersion, int minorVersion, int subminorVersion) + { + NxVersion nxVersion = new NxVersion(); + + //Wert auflösen und in den Variablen ablegen + AlignCode(ugiiProductName, majorVersion, minorVersion, subminorVersion, 0, 0); + + return AssignVersion(); //Werte zuordnen + } /// /// Assign values to a NX Version. @@ -494,7 +659,7 @@ namespace NxVersion /// A valid NX Phase. E.g.: 5 of NX 10.0.3.5 /// A valid Maintenance Pack. E.g.: MP4 of NX 10.0.3.5 MP4 /// A full defined NX Version. - private NxVersion GetNxVersion(string ugiiProductName, int majorVersion, int minorVersion, int subminorVersion, int phase, int mp) + public NxVersion GetNxVersion(string ugiiProductName, int majorVersion, int minorVersion, int subminorVersion, int phase, int mp) { NxVersion nxVersion = new NxVersion(); @@ -513,7 +678,6 @@ namespace NxVersion /// 0 = equal, 1 = first version newer, 2 = second version newer, -1 = An error is happened. public int Compare(NxVersion version) { - //version.PostNX12 = IsPostNX12(version); return Compare(this, version); } @@ -525,15 +689,15 @@ namespace NxVersion /// 0 = equal, 1 = first version newer, 2 = second version newer, -1 = An error is happened. public int Compare(NxVersion version1, NxVersion version2) { - if (IsPostNX12(version1) & IsPostNX12(version2)) + if (version1.PostNX12 & version2.PostNX12) { return ComparePostNX12(version1, version2); } - if (!IsPostNX12(version1) & !IsPostNX12(version2)) + if (!version1.PostNX12 & !version2.PostNX12) { return CompareUpToNX12(version1, version2); } - if ((IsPostNX12(version1) & !IsPostNX12(version2)) || (!IsPostNX12(version1) & IsPostNX12(version2))) + if ((version1.PostNX12 & !version2.PostNX12) || (!version1.PostNX12 & version2.PostNX12)) { return CompareDiffVersions(version1, version2); } @@ -574,7 +738,7 @@ namespace NxVersion version2.MaintenancePackNumber = Convert.ToInt32(version2.MaintenancePack.Remove(0, 2)); } } - + //if (version1.NXpatch == version2.NXpatch) if (version1.UgiiMajorVersion == version2.UgiiMajorVersion & version1.UgiiMinorVersion == version2.UgiiMinorVersion & version1.UgiiSubminorVersion == version2.UgiiSubminorVersion & version1.NXphase == version2.NXphase & version1.MaintenancePackNumber == version2.MaintenancePackNumber) { diff --git a/NxVersion/Properties/AssemblyInfo.cs b/NxVersion/Properties/AssemblyInfo.cs index f408a65..12ea8f7 100644 --- a/NxVersion/Properties/AssemblyInfo.cs +++ b/NxVersion/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("NxVersion")] -[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyCopyright("Copyright © 2019 by Eugen Höglinger")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")]