Огромный 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();