Подскажите пожалуйста как в IS сделать проверку перед началом деинсталяции на факт запуска программы и если программа запущена обязать пользователя выйти из программу перед деинсталяцией?
L>Подскажите пожалуйста как в IS сделать проверку перед началом деинсталяции на факт запуска программы и если программа запущена обязать пользователя выйти из программу перед деинсталяцией?
Смотри в сторону встроенных функций типа CheckForMutexes(), MsgBox() и т.п.
Здравствуйте, leonidus1981, Вы писали:
L>Подскажите пожалуйста как в IS сделать проверку перед началом деинсталяции на факт запуска программы и если программа запущена обязать пользователя выйти из программу перед деинсталяцией?
Всё достаточно просто. Нужно в скрипт включить вот это:
[Setup]
AppMutex=MyProgramsMutexName
This directive is used to prevent the user from installing new versions of an application while the application is still running, and to prevent the user from uninstalling a running application. It specifies the names of one or more named mutexes (multiple mutexes are separated by commas), which Setup and Uninstall will check for at startup. If any exist, Setup/Uninstall will display the message: "[Setup or Uninstall] has detected that [AppName] is currently running. Please close all instances of it now, then click OK to continue, or Cancel to exit." The value may include constants.
Ну и в код включить создание соответствуюещго мутекса. В справке к инно всё написано.
27.04.09 08:18: Перенесено модератором из 'Shareware и бизнес' — Odi$$ey
Здравствуйте, leonidus1981, Вы писали:
L>Подскажите пожалуйста как в IS сделать проверку перед началом деинсталяции на факт запуска программы и если программа запущена обязать пользователя выйти из программу перед деинсталяцией?
Скрипт:
[Setup]
AppMutex=MYMUTEXNAME
...
Программа:
int WINAPI _tWinMain( HINSTANCE, HINSTANCE, LPTSTR, int )
{
::CreateMutex( NULL, FALSE, "MYMUTEXNAME" );
...
InnoSetup попросит пользователя сначала закрыть приложение.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Серёжа Новиков,
программист
Re[2]: Вопрос по Inno setup
От:
Аноним
Дата:
26.04.09 22:52
Оценка:
Здравствуйте.
Прошу прощения, что спрашиваю в вопросе про InnoSetup. А в NSIS подобный механизм имеется?
L>Подскажите пожалуйста как в IS сделать проверку перед началом деинсталяции на факт запуска программы и если программа запущена обязать пользователя выйти из программу перед деинсталяцией?
у меня примерно так
function CheckOpenProg(): Boolean;
begin
if FindWindowByWindowName('Wtlauncher') <> 0 then
begin
MsgBox('Найдена не закрытая оболочка для запуска. Обновление не может быть произведено.' + #13#10#13#10 + 'Закройте оболочку и нажмите кнопку "Далее".', mbInformation, mb_Ok);
Result := false;
end
end
ну и при нажатии Next соответсвенно это все вызывается
Здравствуйте, <Аноним>, Вы писали:
А>Прошу прощения, что спрашиваю в вопросе про InnoSetup. А в NSIS подобный механизм имеется?
Там вообще что угодно можно сделать: см. System::Call и обёртки к нему.