コード例 #1
0
        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);
        }
コード例 #2
0
        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);
                        }
                    }
                }
            }
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
 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);
                 }
             }
         }
     }
 }
コード例 #6
0
        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();
        }