|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
Ветеран Сообщения: 1269 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме 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 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Vanadiy777, Да хотел еще реализовать вот такую штуку.
...
Хотелось бы реализовать на первой странице два чекбокса.
Обычная установка и Портативная распаковка. И если выбрать вариант "Портативная распаковка" то на странице "Выбор папки установки" появлялся бы чекбокс "Упаковать в архив" В общем при выборе "Портативная распаковка" + "Упаковать в архив" должна быть функция упаковки файлов для портативки архиватором 7z с названием архива NameRrogram.VersionProgram.Portable.7z Как раз на странице "Выбор папки установки" можно сразу и выбрать в какую папку этот архив скинуть. |
Последний раз редактировалось DA-Bro, 25-11-2022 в 01:32. Отправлено: 23:20, 19-11-2022 | #951 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2186
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
Это уже точно не ко мне... На этом мои знания заканчиваются... В теме где то упоминалось что то похожее, попробуйте поискать... Вот про проценты, но сам не пробовал, хотите - пилите под себя: Пример
[Setup] AppName=MyApp AppVerName=MyApp DefaultDirName={pf}\MyApp [Files] Source: innocallback.dll; Flags: dontcopy Source: {win}\Help\*; DestDir: {app}; Flags: external recursesubdirs [_Code] type TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord); var PercentsTimer: LongWord; PercentsLabel: TLabel; function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall'; function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32'; function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload'; function NumToStr(Float: Extended): String; Begin Result:= Format('%.1n', [Float]); StringChange(Result, ',', '.'); while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do SetLength(Result, Length(Result)-1); end; procedure PercentsProc(h, msg, idevent, dwTime: Longword); Begin with WizardForm.ProgressGauge do begin PercentsLabel.Caption:= 'Выполнено ' + NumToStr((Position*100)/Max) + ' %'; end; end; procedure DeinitializeSetup(); begin KillTimer(0, PercentsTimer); end; procedure InitializeWizard(); begin PercentsLabel:= TLabel.Create(WizardForm); with PercentsLabel do begin Left:= WizardForm.ProgressGauge.Left; Top:= WizardForm.ProgressGauge.Top + WizardForm.ProgressGauge.Height + ScaleY(10); Width:= WizardForm.StatusLabel.Width; Height:= WizardForm.StatusLabel.Height; AutoSize:= False; Transparent := True; Parent:= WizardForm.InstallingPage; end; end; procedure CurStepChanged(CurStep: TSetupStep); begin if CurStep = ssInstall then begin PercentsTimer:= SetTimer(0, 0, 100, WrapTimerProc(@PercentsProc, 4)); end; end; Понадобится библиотека innocallback.dll, если поиском не найдете, пришлю в личку... |
|
------- Отправлено: 00:18, 20-11-2022 | #952 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:36, 20-11-2022 | #953 |
Ветеран Сообщения: 2186
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
сам не пробовал... Пример:
[Files] Source: ISTask.dll; DestDir: {app}; Flags: ignoreversion [_Code] ///функции используемые при деинсталляции ///RunTask@{app}\ISTask.dll - название функции (в данном случае, если программа работает) ///и путь dll'ки где она расположена... function RunTask(FileName: string; bFullpath: Boolean): Boolean; external 'RunTask@{app}\ISTask.dll stdcall delayload uninstallonly'; function KillTask(ExeFileName: string): Integer; external 'KillTask@{app}\ISTask.dll stdcall delayload uninstallonly'; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin if CurUninstallStep = usUninstall then if RunTask('winamp.exe', False) then begin ///прячем форму UninstallProgressForm.Visible:= False; if MsgBox('Программа winamp.exe используется. Закрыть и продолжить удаление?', mbConfirmation, MB_YESNO) = IDYES then begin KillTask('winamp.exe'); UnloadDll(ExpandConstant('{app}\ISTask.dll')); ///показываем форму UninstallProgressForm.Visible:= True; end else begin MsgBox('Завершите работу winamp.exe, затем снова запустите программу удаления.', mbInformation, MB_OK); UnloadDll(ExpandConstant('{app}\ISTask.dll')); Abort; end; end; end; |
|
------- Отправлено: 01:16, 20-11-2022 | #954 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Vanadiy777, Спасибо! Попробую.
Что-то кнопки "Полезное сообщение" пропали. Хотел нажать, а их нет. У меня наверно лимит превышен ) |
Отправлено: 01:50, 20-11-2022 | #955 |
Ветеран Сообщения: 2186
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
|
|
------- Отправлено: 21:51, 20-11-2022 | #956 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Подскажите пожалуйста.
Как сделать чтобы в инсталляторе при выборе Русского языка прописывалось везде "Русское название программы", а при выборе Английского или по дефолту "English Name Programs". И папка программы в меню Start так же называлась при выборе языка. Что-то вроде этого. #define AppName "Русское название программы" #define AppVerName "Русское название программы 1.0" #define AppName1 "English Name Programs" #define AppVerName1 "English Name Programs 1.0" |
Отправлено: 23:52, 17-12-2022 | #957 |
Ветеран Сообщения: 2186
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
это не нужно... Вот так нормально работает: [Setup] AppName={cm:AppName} AppVerName={cm:AppName} 1.0 DefaultGroupName={cm:AppName} UninstallDisplayName={cm:AppName} [Languages] Name: EN; MessagesFile: compiler:Default.isl Name: RU; MessagesFile: compiler:Languages\Russian.isl [CustomMessages] EN.AppName=English Name Programs RU.AppName=Русское название программы |
|
------- Отправлено: 12:46, 18-12-2022 | #958 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Vanadiy777, Спасибо! Помогло. Даже очень.
Подскажите пожалуйста, ещё вот такая загвоздка. В языковом файле есть такая строчка: [Messages] ; *** Application titles SetupWindowTitle=%1 Название программы отображается. А как сделать чтобы название и версия программы отображались. Я и так SetupWindowTitle=%1 %2 и так SetupWindowTitle=[name/ver] пробовал подставлять. Это не срабатывает. |
Отправлено: 15:16, 18-12-2022 | #959 |
Ветеран Сообщения: 2186
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
можно так: [Setup] AppName={cm:AppName} AppVerName={cm:AppName} 1.0 AppVersion=1.0 DefaultGroupName={cm:AppName} UninstallDisplayName={cm:AppName} [Languages] Name: EN; MessagesFile: compiler:Default.isl Name: RU; MessagesFile: compiler:Languages\Russian.isl [Messages] EN.SetupWindowTitle=Setup — %1 {#SetupSetting('AppVersion')} RU.SetupWindowTitle=Установка — %1 {#SetupSetting('AppVersion')} ; Если в заголовке не нужно "Установка", тогда можно просто так: SetupWindowTitle=%1 {#SetupSetting('AppVersion')} [CustomMessages] EN.AppName=English Name Programs RU.AppName=Русское название программы |
|
------- Последний раз редактировалось Vanadiy777, 18-12-2022 в 17:21. Отправлено: 17:10, 18-12-2022 | #960 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|