Что вам нужно сделать, это сказать Windows, чтобы загружать всю вашу программу в память, а не позволять ей требовать загрузки страниц, когда это необходимо. Я сделал это успешно для приложений, работающих с компакт-диска. У меня сейчас нет с собой кода, но я вспоминаю, что нашел подсказки о том, как сделать это в исходном коде для фантастической программы установки с открытым исходным кодом Inno Setup.
Редактировать: На самом деле, после небольшого исследования, вы можете использовать директиву компилятора Delphi, чтобы сообщить Windows о загрузке полного исполняемого файла. Это работает, если у вас Delphi> 2006. Это приведет к тому, что вы никогда не получите внешнее исключение.
Поместите эту строку в файл проекта приложения:
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
Это говорит Windows, что исполняемый файл будет использоваться со съемного носителя, поэтому загрузите исполняемый файл в память (или файл подкачки). Тогда вам не нужно беспокоиться о таких вещах, как копирование файла на компьютер и т. Д.
Редактировать 2: В настоящее время у меня есть доступ к Delphi 7, и я могу подтвердить, как отмечали другие, что это также работает с Delphi 7 (и, вероятно, Delphi 6) со следующим кодом:
const
IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = $0400;
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
Для Delphi <6 вы можете пойти по пути принудительного выполнения исполняемого файла для подкачки. Существует пример того, как сделать это в C ++ <a href="http://www.microsoft.com/msj/0398/win320398.aspx" rel="nofollow noreferrer"> здесь (если вы не найдете способ изменить Флаги заголовка PE после времени соединения, что выглядит сложным)
N @