Stream SaveClientFile() { MemoryStream ms = new MemoryStream(); try { // file-identification data WriteFiles.WriteHeader(ms, "IUCDFV2"); //Company Name WriteFiles.WriteDeprecatedString(ms, 0x01, CompanyName); //Product Name WriteFiles.WriteDeprecatedString(ms, 0x02, ProductName); // GUID if (m_GUID != null) { WriteFiles.WriteString(ms, 0x0A, m_GUID); } //Installed Version WriteFiles.WriteDeprecatedString(ms, 0x03, InstalledVersion); foreach (string site in ServerFileSites) { //Server File Site WriteFiles.WriteDeprecatedString(ms, 0x04, site); } foreach (string site in ClientServerSites) { //Client Server File Site WriteFiles.WriteDeprecatedString(ms, 0x09, site); } //Header image alignment WriteFiles.WriteDeprecatedString(ms, 0x11, HeaderImageAlign.ToString()); //Header text indent WriteFiles.WriteInt(ms, 0x12, HeaderTextIndent); //Header text color if (!string.IsNullOrEmpty(HeaderTextColorName)) { WriteFiles.WriteDeprecatedString(ms, 0x13, HeaderTextColorName); } //Top image filename if (!string.IsNullOrEmpty(TopImageFilename)) { WriteFiles.WriteDeprecatedString(ms, 0x14, TopImageFilename); } //Side image filename if (!string.IsNullOrEmpty(SideImageFilename)) { WriteFiles.WriteDeprecatedString(ms, 0x15, SideImageFilename); } foreach (DictionaryEntry dLang in Languages) { LanguageCulture lang = (LanguageCulture)dLang.Value; //Language culture WriteFiles.WriteDeprecatedString(ms, 0x18, lang.Culture); //Language filename if (!string.IsNullOrEmpty(lang.Filename)) { WriteFiles.WriteDeprecatedString(ms, 0x16, lang.Filename); } } //Hide the header divider if (HideHeaderDivider) { WriteFiles.WriteBool(ms, 0x17, true); } if (CloseOnSuccess) { WriteFiles.WriteBool(ms, 0x19, true); } if (!string.IsNullOrEmpty(CustomWyUpdateTitle)) { WriteFiles.WriteString(ms, 0x1A, CustomWyUpdateTitle); } if (!string.IsNullOrEmpty(PublicSignKey)) { WriteFiles.WriteString(ms, 0x1B, PublicSignKey); } if (!string.IsNullOrEmpty(UpdatePassword)) { WriteFiles.WriteString(ms, 0x1C, UpdatePassword); } ms.WriteByte(0xFF); ms.Position = 0; } catch (Exception) { ms.Dispose(); throw; } return(ms); }
public void OpenClientFile(string m_Filename, ClientLanguage lang, string forcedCulture, string updatePathVar, string customUrlArgs) { using (ZipFile zip = ZipFile.Read(m_Filename)) { // load the client details (image filenames, languages, etc.) using (MemoryStream ms = new MemoryStream()) { zip["iuclient.iuc"].Extract(ms); //read in the client data LoadClientData(ms, updatePathVar, customUrlArgs); } // load the top image if (!string.IsNullOrEmpty(TopImageFilename)) { using (MemoryStream ms = new MemoryStream()) { zip[TopImageFilename].Extract(ms); // convert the bytes to an images TopImage = Image.FromStream(ms, true); } } // load the side image if (!string.IsNullOrEmpty(SideImageFilename)) { using (MemoryStream ms = new MemoryStream()) { zip[SideImageFilename].Extract(ms); // convert the bytes to an images SideImage = Image.FromStream(ms, true); } } // Backwards compatability with pre-v1.3 of wyUpdate: // if the languages has a culture with a null name, load that file if (Languages.Count == 1 && Languages.Contains(string.Empty)) { using (MemoryStream ms = new MemoryStream()) { zip[((LanguageCulture)Languages[string.Empty]).Filename].Extract(ms); lang.Open(ms); } } else if (Languages.Count > 0) { LanguageCulture useLang = null; // use a forced culture if (!string.IsNullOrEmpty(forcedCulture)) { useLang = (LanguageCulture)Languages[forcedCulture]; } // try to find the current culture if (useLang == null) { useLang = (LanguageCulture)Languages[CultureInfo.CurrentUICulture.Name]; } // if current culture isn't available, use the default culture (english) if (useLang == null) { useLang = (LanguageCulture)Languages["en-US"]; } // if the default culture isn't available, use the first available language if (useLang == null) { foreach (LanguageCulture l in Languages.Values) { useLang = l; break; } } if (useLang != null && !string.IsNullOrEmpty(useLang.Filename)) { using (MemoryStream ms = new MemoryStream()) { zip[useLang.Filename].Extract(ms); lang.Open(ms); } } } } }
void LoadClientData(Stream ms, string updatePathVar, string customUrlArgs) { ms.Position = 0; // Read back the file identification data, if any if (!ReadFiles.IsHeaderValid(ms, "IUCDFV2")) { //free up the file so it can be deleted ms.Close(); throw new Exception("The client file does not have the correct identifier - this is usually caused by file corruption."); } #if !CLIENT_READER LanguageCulture lastLanguage = null; #endif string serverSite; byte bType = (byte)ms.ReadByte(); while (!ReadFiles.ReachedEndByte(ms, bType, 0xFF)) { switch (bType) { case 0x01: //Read Company Name CompanyName = ReadFiles.ReadDeprecatedString(ms); break; case 0x02: //Product Name ProductName = ReadFiles.ReadDeprecatedString(ms); break; case 0x0A: // GUID m_GUID = ReadFiles.ReadString(ms); break; case 0x03: //Read Installed Version InstalledVersion = ReadFiles.ReadDeprecatedString(ms); break; case 0x04: //Add server file site serverSite = ReadFiles.ReadDeprecatedString(ms); if (updatePathVar != null) { serverSite = serverSite.Replace("%updatepath%", updatePathVar); } if (customUrlArgs != null) { serverSite = serverSite.Replace("%urlargs%", customUrlArgs); } AddUniqueString(serverSite, ServerFileSites); break; case 0x09: //Add client server file site serverSite = ReadFiles.ReadDeprecatedString(ms); if (updatePathVar != null) { serverSite = serverSite.Replace("%updatepath%", updatePathVar); } if (customUrlArgs != null) { serverSite = serverSite.Replace("%urlargs%", customUrlArgs); } AddUniqueString(serverSite, ClientServerSites); break; case 0x11: //Header image alignment try { HeaderImageAlign = (ImageAlign)Enum.Parse(typeof(ImageAlign), ReadFiles.ReadDeprecatedString(ms)); } catch { } break; case 0x12: //Header text indent HeaderTextIndent = ReadFiles.ReadInt(ms); break; case 0x13: //Header text color HeaderTextColorName = ReadFiles.ReadDeprecatedString(ms); break; case 0x14: //header image filename TopImageFilename = ReadFiles.ReadDeprecatedString(ms); break; case 0x15: //side image filename SideImageFilename = ReadFiles.ReadDeprecatedString(ms); break; #if CLIENT_READER case 0x18: // language culture Languages.Add(ReadFiles.ReadDeprecatedString(ms)); break; #else case 0x18: // language culture lastLanguage = new LanguageCulture(ReadFiles.ReadDeprecatedString(ms)); Languages.Add(lastLanguage.Culture, lastLanguage); break; case 0x16: //language filename if (lastLanguage != null) { lastLanguage.Filename = ReadFiles.ReadDeprecatedString(ms); } else { Languages.Add(string.Empty, new LanguageCulture(null) { Filename = ReadFiles.ReadDeprecatedString(ms) }); } break; #endif case 0x17: //hide the header divider HideHeaderDivider = ReadFiles.ReadBool(ms); break; case 0x19: CloseOnSuccess = ReadFiles.ReadBool(ms); break; case 0x1A: CustomWyUpdateTitle = ReadFiles.ReadString(ms); break; case 0x1B: PublicSignKey = ReadFiles.ReadString(ms); break; case 0x1C: UpdatePassword = ReadFiles.ReadString(ms); break; default: ReadFiles.SkipField(ms, bType); break; } bType = (byte)ms.ReadByte(); } ms.Close(); }
private Stream SaveClientFile() { MemoryStream memoryStream = new MemoryStream(); try { WriteFiles.WriteHeader(memoryStream, "IUCDFV2"); WriteFiles.WriteDeprecatedString(memoryStream, 1, CompanyName); WriteFiles.WriteDeprecatedString(memoryStream, 2, ProductName); if (m_GUID != null) { WriteFiles.WriteString(memoryStream, 10, m_GUID); } WriteFiles.WriteDeprecatedString(memoryStream, 3, InstalledVersion); foreach (string serverFileSite in ServerFileSites) { WriteFiles.WriteDeprecatedString(memoryStream, 4, serverFileSite); } foreach (string clientServerSite in ClientServerSites) { WriteFiles.WriteDeprecatedString(memoryStream, 9, clientServerSite); } WriteFiles.WriteDeprecatedString(memoryStream, 17, HeaderImageAlign.ToString()); WriteFiles.WriteInt(memoryStream, 18, HeaderTextIndent); if (!string.IsNullOrEmpty(HeaderTextColorName)) { WriteFiles.WriteDeprecatedString(memoryStream, 19, HeaderTextColorName); } if (!string.IsNullOrEmpty(TopImageFilename)) { WriteFiles.WriteDeprecatedString(memoryStream, 20, TopImageFilename); } if (!string.IsNullOrEmpty(SideImageFilename)) { WriteFiles.WriteDeprecatedString(memoryStream, 21, SideImageFilename); } foreach (DictionaryEntry language in Languages) { LanguageCulture languageCulture = (LanguageCulture)language.Value; WriteFiles.WriteDeprecatedString(memoryStream, 24, languageCulture.Culture); if (!string.IsNullOrEmpty(languageCulture.Filename)) { WriteFiles.WriteDeprecatedString(memoryStream, 22, languageCulture.Filename); } } if (HideHeaderDivider) { WriteFiles.WriteBool(memoryStream, 23, val: true); } if (CloseOnSuccess) { WriteFiles.WriteBool(memoryStream, 25, val: true); } if (!string.IsNullOrEmpty(CustomWyUpdateTitle)) { WriteFiles.WriteString(memoryStream, 26, CustomWyUpdateTitle); } if (!string.IsNullOrEmpty(PublicSignKey)) { WriteFiles.WriteString(memoryStream, 27, PublicSignKey); } if (!string.IsNullOrEmpty(UpdatePassword)) { WriteFiles.WriteString(memoryStream, 28, UpdatePassword); } memoryStream.WriteByte(byte.MaxValue); memoryStream.Position = 0L; return(memoryStream); } catch (Exception) { memoryStream.Dispose(); throw; } }
public void OpenClientFile(string m_Filename, ClientLanguage lang, string forcedCulture, string updatePathVar, string customUrlArgs) { using (ZipFile zipFile = ZipFile.Read(m_Filename)) { using (MemoryStream memoryStream = new MemoryStream()) { zipFile["iuclient.iuc"].Extract(memoryStream); LoadClientData(memoryStream, updatePathVar, customUrlArgs); } if (!string.IsNullOrEmpty(TopImageFilename)) { using (MemoryStream stream = new MemoryStream()) { zipFile[TopImageFilename].Extract(stream); TopImage = Image.FromStream(stream, useEmbeddedColorManagement: true); } } if (!string.IsNullOrEmpty(SideImageFilename)) { using (MemoryStream stream2 = new MemoryStream()) { zipFile[SideImageFilename].Extract(stream2); SideImage = Image.FromStream(stream2, useEmbeddedColorManagement: true); } } if (Languages.Count == 1 && Languages.Contains(string.Empty)) { using (MemoryStream memoryStream2 = new MemoryStream()) { zipFile[((LanguageCulture)Languages[string.Empty]).Filename].Extract(memoryStream2); lang.Open(memoryStream2); } } else if (Languages.Count > 0) { LanguageCulture languageCulture = null; if (!string.IsNullOrEmpty(forcedCulture)) { languageCulture = (LanguageCulture)Languages[forcedCulture]; } if (languageCulture == null) { languageCulture = (LanguageCulture)Languages[CultureInfo.CurrentUICulture.Name]; } if (languageCulture == null) { languageCulture = (LanguageCulture)Languages["en-US"]; } if (languageCulture == null) { { IEnumerator enumerator = Languages.Values.GetEnumerator(); try { if (enumerator.MoveNext()) { LanguageCulture languageCulture2 = (LanguageCulture)enumerator.Current; languageCulture = languageCulture2; } } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) { disposable.Dispose(); } } } } if (languageCulture != null && !string.IsNullOrEmpty(languageCulture.Filename)) { using (MemoryStream memoryStream3 = new MemoryStream()) { zipFile[languageCulture.Filename].Extract(memoryStream3); lang.Open(memoryStream3); } } } } }
private void LoadClientData(Stream ms, string updatePathVar, string customUrlArgs) { ms.Position = 0L; if (!ReadFiles.IsHeaderValid(ms, "IUCDFV2")) { ms.Close(); throw new Exception("The client file does not have the correct identifier - this is usually caused by file corruption."); } LanguageCulture languageCulture = null; byte b = (byte)ms.ReadByte(); while (!ReadFiles.ReachedEndByte(ms, b, byte.MaxValue)) { switch (b) { case 1: CompanyName = ReadFiles.ReadDeprecatedString(ms); break; case 2: ProductName = ReadFiles.ReadDeprecatedString(ms); break; case 10: m_GUID = ReadFiles.ReadString(ms); break; case 3: InstalledVersion = ReadFiles.ReadDeprecatedString(ms); break; case 4: { string text = ReadFiles.ReadDeprecatedString(ms); if (updatePathVar != null) { text = text.Replace("%updatepath%", updatePathVar); } if (customUrlArgs != null) { text = text.Replace("%urlargs%", customUrlArgs); } AddUniqueString(text, ServerFileSites); break; } case 9: { string text = ReadFiles.ReadDeprecatedString(ms); if (updatePathVar != null) { text = text.Replace("%updatepath%", updatePathVar); } if (customUrlArgs != null) { text = text.Replace("%urlargs%", customUrlArgs); } AddUniqueString(text, ClientServerSites); break; } case 17: try { HeaderImageAlign = (ImageAlign)Enum.Parse(typeof(ImageAlign), ReadFiles.ReadDeprecatedString(ms)); } catch { } break; case 18: HeaderTextIndent = ReadFiles.ReadInt(ms); break; case 19: HeaderTextColorName = ReadFiles.ReadDeprecatedString(ms); break; case 20: TopImageFilename = ReadFiles.ReadDeprecatedString(ms); break; case 21: SideImageFilename = ReadFiles.ReadDeprecatedString(ms); break; case 24: languageCulture = new LanguageCulture(ReadFiles.ReadDeprecatedString(ms)); Languages.Add(languageCulture.Culture, languageCulture); break; case 22: if (languageCulture != null) { languageCulture.Filename = ReadFiles.ReadDeprecatedString(ms); } else { Languages.Add(string.Empty, new LanguageCulture(null) { Filename = ReadFiles.ReadDeprecatedString(ms) }); } break; case 23: HideHeaderDivider = ReadFiles.ReadBool(ms); break; case 25: CloseOnSuccess = ReadFiles.ReadBool(ms); break; case 26: CustomWyUpdateTitle = ReadFiles.ReadString(ms); break; case 27: PublicSignKey = ReadFiles.ReadString(ms); break; case 28: UpdatePassword = ReadFiles.ReadString(ms); break; default: ReadFiles.SkipField(ms, b); break; } b = (byte)ms.ReadByte(); } ms.Close(); }