|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме 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 |
|
Пользователь Сообщения: 99
|
Профиль | Отправить 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 |
|
Пользователь Сообщения: 99
|
Профиль | Отправить 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 |
|
Пользователь Сообщения: 99
|
Профиль | Отправить PM | Цитировать Vanadiy777, Спасибо! Попробую.
Что-то кнопки "Полезное сообщение" пропали. Хотел нажать, а их нет. У меня наверно лимит превышен ) |
|
Отправлено: 01:50, 20-11-2022 | #955 |
|
Ветеран Сообщения: 2186
|
Профиль | Отправить PM | Цитировать Цитата DA-Bro:
|
|
|
------- Отправлено: 21:51, 20-11-2022 | #956 |
|
Пользователь Сообщения: 99
|
Профиль | Отправить 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 |
|
Пользователь Сообщения: 99
|
Профиль | Отправить 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 | |
|