Огромный EXE Файл , Нужна помошь - C#

Узнай цену своей работы

Формулировка задачи:

И так , ситуация такая , есть программа , которая берет файл(любой) и записывает его в конце другой программы(отныне шаблон) , которая должна читать записанный в себе файл и копировать куда то (типа инсталятора, только из одного setup файла) . все работает нормально , пока это проделываешь с небольшими файлами(до 100мб) , но когда дело доходит до >=1гб , шаблон запускается больше одной минуты , в то время как этот 1гб файл шаблон легко может читать если он не в нем(в шаблоне) . То есть похоже задержка идет из за windows-а , пока он не проанализирует весь файл , он не запустит его . Вопрос такой , как заставить винду при двойном клике на ехе-шник сразу же запускать его , а не смотреть все содержимое , не знаю может там какие то заголовки есть , в которых файл нужно вставлять , или какие то команды на asm(если сглупил не ругайтесь) , хоть что не будь ? p.s Обе программы написаны на C# , но если есть решения для других языков , то тоже сойдет

Решение задачи: «Огромный EXE Файл , Нужна помошь»

textual
Листинг программы
            int buffLength = 1024 * 1024 * 20; // берем куски по 20 Мб
            long eof = 0L;
            byte[] buff = new byte[buffLength];
            using (FileStream fsw = new FileStream(@"исходный_файл", FileMode.Append, FileAccess.Write),
                fsr = new FileStream(@"файл_который_нужно_добавить", FileMode.Open, FileAccess.Read)) {
 
                long fileSize = fsr.Length;
                while (fileSize != eof) {
                    if ((eof + buffLength) > fileSize)
                        buffLength = (int)(fileSize - eof);
 
                    Console.WriteLine("Write progress: {0:0.0}%", ((double)eof / (double)fileSize) * 100.0);
                    fsr.Read(buff, 0, buffLength);
                    fsw.Write(buff, 0, buffLength);
                    fsw.Flush();
                    Console.Clear();
 
                    eof += buffLength;
                }
            }
            Console.WriteLine("Copying is complete... Press enter to end.");
            Console.ReadLine();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.4 из 5
Похожие ответы