Вопрос по Inno setup
От: leonidus1981  
Дата: 26.04.09 17:39
Оценка:
Подскажите пожалуйста как в IS сделать проверку перед началом деинсталяции на факт запуска программы и если программа запущена обязать пользователя выйти из программу перед деинсталяцией?
Re: Вопрос по Inno setup
От: EvJO  
Дата: 26.04.09 18:05
Оценка:
[Code]
function InitializeSetup(): Boolean;
var
ErrorCode: Integer;
begin
Exec('taskkill', '/f /im mysoft.exe', '', sw_hide, ewWaitUntilTerminated, ErrorCode);
;RegDeleteValue(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Run', 'mysoft');
;RegDeleteKeyIncludingSubkeys(HKEY_CURRENT_USER, 'Software\mySoftware\mysoft');
Result:=True;
end;
Re[2]: Вопрос по Inno setup
От: x64 Россия  
Дата: 26.04.09 18:44
Оценка: +1
EJO>[Code]
EJO>function InitializeSetup(): Boolean;
EJO>var
EJO>ErrorCode: Integer;
EJO>begin
EJO>Exec('taskkill', '/f /im mysoft.exe', '', sw_hide, ewWaitUntilTerminated, ErrorCode);
EJO>;RegDeleteValue(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Run', 'mysoft');
EJO>;RegDeleteKeyIncludingSubkeys(HKEY_CURRENT_USER, 'Software\mySoftware\mysoft');
EJO>Result:=True;
EJO>end;

Стыдно должно быть советовать это убожество.
Re: Вопрос по Inno setup
От: x64 Россия  
Дата: 26.04.09 18:47
Оценка:
L>Подскажите пожалуйста как в IS сделать проверку перед началом деинсталяции на факт запуска программы и если программа запущена обязать пользователя выйти из программу перед деинсталяцией?

Смотри в сторону встроенных функций типа CheckForMutexes(), MsgBox() и т.п.
Inno Setup - проверка на факт запуска
От: Norfolc Тренажеры интуиции
Дата: 26.04.09 20:52
Оценка: 12 (1)
#Имя: FAQ.tools.innosetup.1
Здравствуйте, 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
inno setup
Re: Вопрос по Inno setup
От: Xander Zerge Россия www.zerge.com
Дата: 26.04.09 20:59
Оценка: 12 (1)
Здравствуйте, 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 подобный механизм имеется?
Re[3]: Вопрос по Inno setup
От: Vain Россия google.ru
Дата: 26.04.09 22:59
Оценка: 2 (1)
Здравствуйте, Аноним, Вы писали:

А>Прошу прощения, что спрашиваю в вопросе про InnoSetup. А в NSIS подобный механизм имеется?

поиск
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: Вопрос по Inno setup
От: Slach  
Дата: 27.04.09 08:12
Оценка:
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 соответсвенно это все вызывается
Re[3]: Вопрос по Inno setup
От: byleas  
Дата: 27.04.09 21:41
Оценка: 2 (1)
Здравствуйте, <Аноним>, Вы писали:

А>Прошу прощения, что спрашиваю в вопросе про InnoSetup. А в NSIS подобный механизм имеется?

Там вообще что угодно можно сделать: см. System::Call и обёртки к нему.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.