![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8] |
|
Скрипты Inno Setup. Помощь и советы [часть 8]
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] Скрипты Inno Setup. Помощь и советы [часть 7] |
|
Отправлено: 08:52, 02-02-2015 |
Пользователь Сообщения: 131
|
Профиль | Сайт | Отправить PM | Цитировать Цитата vadjliss:
|
|
------- Отправлено: 12:24, 14-08-2015 | #881 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата vadjliss:
Пример почти как на скрине. Зачем вам такой велосипед?
#define MyAppName "Test" #define MyAppVersion "1.0" [setup] appid=test1 appname={#MyAppName} appvername={#MyAppVersion} DefaultDirName={sd}\{#MyAppName} [code] var BtnDel, BtnNDel: TNewRadioButton; function CheckChoose(): Boolean; var ShowForm: TSetupForm; begin ShowForm := CreateCustomForm; ShowForm.Position:=poScreenCenter; try ShowForm.ClientWidth := ScaleX(410); ShowForm.ClientHeight := ScaleY(170); ShowForm.BorderStyle := bsSingle; ShowForm.BorderIcons := [biSystemMenu]; ShowForm.Caption := '{#MyAppName} {#MyAppVersion}'; with TNewButton.Create(ShowForm) do begin Parent := ShowForm; SetBounds(ScaleX(110), ScaleY(120), ScaleX(90), ScaleY(25)); ModalResult := mrYes; Caption := 'OK'; end; with TNewStaticText.Create(ShowForm) do begin Parent:= ShowForm; Caption:='Мастер может выполнить поиск предыдущей версии {#MyAppName} {#MyAppVersion} и'+ #13#10 + 'удалить её. Вы хотите удалить предыдущую версию?'; Left:=ScaleX(20); Top:=ScaleY(20); Font.Name:= 'Tahoma'; Font.Size:= 9; Font.Color:=clBlack;; end; BtnDel := TNewRadioButton.Create(ShowForm); with BtnDel do begin Parent := ShowForm; Left := ScaleX(20); Top := ScaleY(60); Width := ScaleX(200); Height := ScaleY(17); Caption := 'Да, удалить предыдущую версию'; Checked := True; end; BtnNDel := TNewRadioButton.Create(ShowForm); with BtnNDel do begin Parent := ShowForm; Left := ScaleX(20); Top := ScaleY(80); Width := ScaleX(272); Height := ScaleY(17); Caption := 'Нет, установить с заменой'; end; with TNewButton.Create(ShowForm) do begin Parent := ShowForm; SetBounds(ScaleX(210), ScaleY(120), ScaleX(90), ScaleY(25)); ModalResult := mrcancel; Caption := SetupMessage(msgButtonCancel); end; Result := (ShowForm.ShowModal = mrYes); finally ShowForm.Free; end; end; function TrueDel: boolean; begin result := BtnDel.Checked; end; function FalseDel: boolean; begin result := BtnNDel.Checked; end; function UninstallApp(): Boolean; var Buff: String; i: Integer; begin Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + ExpandConstant( '{#SetupSetting( "AppId" )}_is1' ), 'UninstallString', Buff ); if not Result then begin Result := not FileExists(RemoveQuotes(Buff)); if not Result then try Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i); finally Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + ExpandConstant( '{#SetupSetting( "AppId" )}_is1' ), 'UninstallString', Buff ); if not Result then result := false; end; end else MsgBox('Программа не найдена!', mbError, MB_OK); end; function InitializeSetup(): Boolean; begin if CheckChoose then if TrueDel then result := UninstallApp else result := false; if FalseDel then result := true; end; Так как на скрине не получится, потому что надо генерировать новый идентификатор программы(AppID). |
|
------- Отправлено: 14:42, 16-08-2015 | #882 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать vadjliss,
[Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application AppId=wwwwwwwwwwwwww [code] function UninstallMyApp(): Boolean; var Buff: String; i: Integer; begin Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff ); if not Result then Result := not FileExists(RemoveQuotes(Buff)); if not Result then if MsgBox('Перед установкой необходимо удалить предыдущую версию приложения. Продолжить?', mbError, MB_YESNO) = IDYES then try Exec(RemoveQuotes(Buff), '', ExtractFilePath(RemoveQuotes(Buff)), SW_SHOW, ewWaitUntilTerminated, i); finally Result := not RegQueryStringValue( HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppID")}_is1', 'UninstallString', Buff ); if not Result then MsgBox('Удаление завершилось неудачей, бывай!', mbError, MB_OK); end; end; function InitializeSetup(): Boolean; begin Result := UninstallMyApp(); end; |
------- Отправлено: 15:01, 16-08-2015 | #883 |
Пользователь Сообщения: 131
|
Профиль | Сайт | Отправить PM | Цитировать habib2302, я уже предлагал vadjliss использовать этот пример (на предыдущей странице), но он ответил, что скрипт у него не работает.
Надеюсь, что Dodakaedr ему поможет. |
------- Отправлено: 17:35, 16-08-2015 | #884 |
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать Цитата Sotonisto:
У меня работает, у vadjliss не работает - Вопрос: Почему? Может всё-таки проблема в этом [Code_] (Отметил красным), которое vadjliss не удалил? Читайте. |
|
Последний раз редактировалось Nordek, 16-08-2015 в 18:33. Причина: Ошибка: всё таки > всё-таки Отправлено: 18:16, 16-08-2015 | #885 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать Sotonisto, ну вы сами видите, что постоянно вопросы задает те, которые легко решаются поиском по темам в печатной версии особенно про портативну. я ему дал легки код и спасибо не сказал. может он appid не сменил или код не правильно вставил. хотя смотрю он пишет, что не отображается текст в msgbox. значит забыл сменить название языка в разделе [CustomMessages] и в [Languages] с rus на свой
|
------- Последний раз редактировалось habib2302, 16-08-2015 в 18:25. Отправлено: 18:18, 16-08-2015 | #886 |
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать Цитата Lanirius:
[Run] Filename: {app}\MyProg32.exe; WorkingDir: {app}; Description: {cm:LaunchProgram,MyProg}; Flags: nowait postinstall skipifsilent; Check: NOT IsWin64 Filename: {app}\MyProg64.exe; WorkingDir: {app}; Description: {cm:LaunchProgram,MyProg}; Flags: nowait postinstall skipifsilent; Check: IsWin64 |
|
Отправлено: 16:19, 21-08-2015 | #887 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Lanirius, используйте IsWin64
|
------- Отправлено: 16:24, 21-08-2015 | #888 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать boss911, Спасибо, работает, однако мне надо что-бы тот файл запускался от администратора (иначе не запускает его). Ну или сам сетапник надо запускать от админа... не подскажите где это надо прописать?
|
Отправлено: 16:49, 21-08-2015 | #889 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать Цитата Lanirius:
|
|
------- Отправлено: 16:52, 21-08-2015 | #890 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|