|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
Ветеран Сообщения: 1271 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z |
|
Отправлено: 16:09, 04-04-2018 |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Ребята, помогите, пожалуйста.
Есть задача, при установке программы создавать нового пользователя windows и добавлять программу в автозагрузку только ему (во время установки программы но не является текущим пользователем.) Пробовала получать SID пользователя после создания, но видимо из-за нехватки опыта получается какая-то ерунда. Выкладываю свои попытки, может подскажете как можно поправить? [Registry] Root: HKU; Subkey: {code:GetUserSid}\Software\Microsoft\Windows\CurrentVersion\Run; ValueName: {#MyAppExeName}; ValueType: string; ValueData: {app}\{#MyAppExeName}; [Run] ; здесь я создаю пользователя и пыталась сделать его загружаемым по умлочания после перезагрузки, но пока точно работает только первая строчка :) Filename: net.exe; parameters: "user Visitor /add /fullname:""Visitor"" /comment:""TEST"" /expires:never /passwordchg:no" Filename: reg.exe; parameters: "ADD HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /v AutoAdminLogon /t REG_SZ /d 1"; Filename: reg.exe; parameters: "ADD HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon /v DefaultUserName /t REG_SZ /d 'Visitor'"; [Code] function GetUserSid(ExecStdout: string):string; var TmpFileName: string; ResultCode: integer; Params: string; begin TmpFileName := ExpandConstant('{tmp}') + '\sid_results.txt'; Exec(ExpandConstant('{cmd}'), ' /C wmic useraccount where name=''Visitor'' get sid > "' + TmpFileName + '"', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); if LoadStringFromFile(TmpFileName, ExecStdout) then begin MsgBox(ExecStdout, mbInformation, MB_OK); end else begin MsgBox('Installing Error', mbError, MB_OK); end; DeleteFile(TmpFileName); end; |
Последний раз редактировалось AnastasiyaM, 22-10-2018 в 12:39. Причина: форматированние Отправлено: 16:45, 20-10-2018 | #101 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Здравствуйте!
Подскажите пожалуйста, как реализовать, чтобы при запуске инсталятора, например, "Моя_прога", если запущена уже ранее установленная программа "Моя_прога.exe", то сразу же, без вопросов, "Моя_прога.exe" закрывалась? |
Последний раз редактировалось Chudmin, 21-10-2018 в 22:32. Отправлено: 22:26, 21-10-2018 | #102 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Chudmin, вообще-то, в этом случае инсталлятор не должен «сразу же, без вопросов» закрываться.
|
Отправлено: 23:00, 21-10-2018 | #103 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Последний раз редактировалось Chudmin, 22-10-2018 в 05:56. Отправлено: 05:44, 22-10-2018 | #104 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Chudmin, и этого быть не должно (разве что «Моя_прога» — это сервис).
|
Отправлено: 05:46, 22-10-2018 | #105 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 06:01, 22-10-2018 | #106 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Chudmin,
[UninstallRun] Filename: "{sys}\taskkill.exe"; Parameters: "/f /im Моя_прога.exe"; Flags: skipifdoesntexist runhidden [Files] Source: "Моя_прога.exe"; DestDir: "{app}"; Flags: ignoreversion; BeforeInstall: TaskKill('Моя_прога.exe') [ Code ] procedure TaskKill(FileName: String); var ResultCode: Integer; begin Exec(ExpandConstant('taskkill.exe'), '/f /im ' + '"' + FileName + '"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode); end; |
Последний раз редактировалось ErikPshat, 22-10-2018 в 06:49. Отправлено: 06:39, 22-10-2018 | #107 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Цитата ErikPshat:
И всё-таки, у Elchupacabra этот процесс происходит сразу же после запуска инсталятора, КАК? Конечно и Ваш способ работает и выполняет свою функцию, но хотелось бы знать как сделать в самом начале, чисто академический интерес. |
|
Отправлено: 07:17, 22-10-2018 | #108 |
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать Цитата Chudmin:
[Files] Source: C:\MyProg\MyProg.exe; DestDir: {app}; Flags: ignoreversion; BeforeInstall: KillProc Source: compiler:Libraries\KillProc.dll; DestDir: {tmp}; Flags: dontcopy [Code] function KillProcByExeName(ProcessName: PAnsiChar; ExcludeID: Cardinal): Integer; external 'KillProcByExeName@files:KillProc.dll stdcall'; procedure KillProc; begin KillProcByExeName('MyProg.exe', 0); end; Правильно или не правильно, но если MyProg.exe не служба и нет ключа командной строки для завершения работы, а процесс без вопросов необходимо завершить и по другому ни как, то это единственный вариант, и уже закрываешь глаза на то, что это не правильно. ИМХО. |
|
Отправлено: 16:00, 22-10-2018 | #109 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Цитата boss911:
Цитата Chudmin:
Скорее всего ваши файлы смирно сидят в инсталляторе и терпеливо ждут, пока юзер не пройдёт все этапы, проставит галочки, там создавать ярдыки на рабочем столе, выбирает дополнения, путь установки, а тоько в заключении жмёт кнопку "Установить". Вот тогда и активируется ваша "Моя_прога.exe", а перед её запуском и начинается поиск процесса и его уничтожение. Чтобы процесс уничтожался сразу при запуске инсталлятора, нужно чтобы у вас в [Files] был бы назначен на BeforeInstall какой-нибудь файлик, который бы извлекался в %TEMP% именно при запуске инсталлятора, а не по нажатию кнопки "Установить". Для примера, вы можете прикрепить к инсталлятору Сплэш-заставку и заодно на неё повесить убийцу процесса: [Files] ; Файлы Splash-заставки, загружаются первыми Source: Include\isgsg.dll; DestDir: {tmp}; Flags: dontcopy nocompression; BeforeInstall: TaskKill('Моя_прога.exe') Source: Include\Splash.png; DestDir: {tmp}; Flags: dontcopy nocompression [ Code ] { Splash заставка } procedure ShowSplashScreen(p1:HWND;p2:AnsiString;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload'; procedure TaskKill(FileName: String);var ResultCode: Integer;begin Exec(ExpandConstant('taskkill.exe'),'/f /im '+'"'+FileName+'"','',SW_HIDE,ewWaitUntilTerminated,ResultCode);end; { Splash заставка } procedure Splash(); begin ExtractTemporaryFile('Splash.png'); ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}\Splash.png'),500,800,500,0,255,True,$FFFFFF,10); end; Таким образом, при запуске программы сразу извлекаются файлы заставки в %TEMP% и запускается заставка перед стартом инсталлятора, но ещё перед этим, запускается убийца процесса, потому что на файл заставки выставлен флаг BeforeInstall. |
||
Последний раз редактировалось ErikPshat, 23-10-2018 в 08:46. Отправлено: 21:21, 22-10-2018 | #110 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 |
|