Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 10
Всего онлайн: 10
Зарегистрировано юзеров: 7663
Комментариев на сайте: 674
Новый юзер: Henryfar



Последние комментарии
c
Eugeneidory прокомментировал "Урок 2 - Переменные и их типы":
http://fedorovkarb.ru - В слуховом аппарате Cyber Sonic используется инновационная запатентованная технология. Она сочетает в себе преимущества двух методов усиления нелинейного и линейного, что позволяет сохранить тонкие детали, делая звуки слышимыми, комфортными и ясными. В сочетании с цифровой обработкой звука в мощном современном процессоре, установленном в Cyber Sonic, технология BrainHearing обеспечивает лучшую разборчивость звуков с минимальными усилиями при прослушивании. Звуки получаются объемными и четкими, что позволяет лучше ориентироваться в пространстве с учетом расположения источников звука. - http://fedorovkarb.ru
rashpell прокомментировал "Урок 69 - Реестр Windows, (часть 2/2)":
Заказать seo поисковую оптимизацию сайта, Заказать услуги по продвижению сайта По всем возникшим вопросам Вы можете обратиться в скайп логин [b]pokras7777[/b]Раскрутка сайта под ключ .Так же собираем базы

Копирование программы во временный каталог

Чтобы не смущать высокое собрание подробным рассмотрением алгоритма, приведу конкретный пример исходника.

program Setup;

uses 
Windows, 
SysUtils;

const 
ReRunParameter = '/install_from_temp_directory';

var 
TempPath: array [0..MAX_PATH] of Char; 
SrcPath: String;

begin 
if ParamStr(1) = ReRunParameter then 
SrcPath := ParamStr(2) 
else 
if GetDriveType(PChar(ParamStr(0)[1] + ':')) = DRIVE_REMOVABLE then 
begin 
// Если программа была запущена без ключа и с дискеты, то 
// копируем её во временный каталог и перезапускам 
// Текущее приложение завершаем. 
GetTempPath(MAX_PATH, TempPath); 
// Добавлям к пути временного каталога символ '', если его там нет 
if (StrLen(TempPath) > 0) and (TempPath[StrLen(TempPath)] <> '') then 
StrCat(TempPath, ''); 
// Копируем файл через вызов функции CopyFile из WinAPI 
CopyFile(PChar(ParamStr(0)), PChar(String(TempPath) + ExtractFileName(ParamStr(0))), False); 
// Запускаем файл с двумя параметрами 
WinExec(PChar(String(TempPath) + ExtractFileName(ParamStr(0)) + ' ' + 
ReRunParameter + ' ' + ExtractFilePath(ParamStr(0))), CmdShow); 
Exit; 
end 
else 
SrcPath := ExtractFilePath(ParamStr(0)); 
// Здесь начинается программа инсталляции 
// Переменная SrcPath показывает нам, откуда надо копировать файлы 
end. 
Есть две грабли, на которые можно наступить в приведённом примере. Первые лежат в вызове функции GetTempPath. Если у вас нет переменных окружения TMP и TEMP, то временным каталогом станет текущий каталог программы, то есть, фактически, ваша дискета.

Вы можете проверять, не находится ли временный каталог на сменном диске (с помощью вызова GetDriveType), и, если находиться, считать временным каталогом C:TEMP (если его нет — создайте самостоятельно).
Вторые грабли заключаются в том, что после завершения инсталляции программу из временного каталога желательно удалить, но сделать этого вы не сможете, поскольку программа в этот момент выполняется. Вспомните, что в Windows 95 и Windows NT выполняющуся программу удалять нельзя.
В общем случае, решения этой проблемы я не знаю. Собственно, поскольку файл останется во временном каталоге, он будет одним из первых кандидатов на удаление (если пользователь хоть когда-нибудь чистит свой временный каталог :) Тем не менее, есть один хитрый способ удаления этого файла, о котором я расскажу ниже, в параграфе о деинсталляции.
Примечание: Если для вас важен размер вашей инсталляции, вы можете взять только тот кусочек, который приведён выше, и сделать из него отдельную программу (которая будет очень небольшого объёма). Саму программу инсталляции вы предварительно сжимаете, а перед запуском распаковываете её во временный каталог (а не копируете, как это сделано здесь).
Обратите внимание, что в этом случае программа должна распаковываться в любом случае, а не только если она запущена с дискеты.

Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 8 Декабря 2013
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.