Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Ответить
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 9]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: El Sanchez
Дата: 06-06-2020
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:

Показать/скрыть: Ссылки на примеры скриптов:

Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;

  • RegExporter - Бесплатная утилита для экспорта реестра и конвертации файлов *.reg и *.ini в инсталляционные скрипты Inno Setup и NSIS.
    Последняя версия: 1.3.0 [17.01.2015] - Скачать;



Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Скрипты 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

 

Пользователь


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, Да хотел еще реализовать вот такую штуку.

...
Хотелось бы реализовать на первой странице два чекбокса.
Обычная установка и Портативная распаковка.

И если выбрать вариант "Портативная распаковка" то
на странице "Выбор папки установки" появлялся бы чекбокс "Упаковать в архив"

В общем при выборе "Портативная распаковка" + "Упаковать в архив"
должна быть функция упаковки файлов для портативки архиватором 7z
с названием архива NameRrogram.VersionProgram.Portable.7z

Как раз на странице "Выбор папки установки" можно сразу и выбрать в какую папку этот архив скинуть.

Последний раз редактировалось DA-Bro, 25-11-2022 в 01:32.


Отправлено: 23:20, 19-11-2022 | #951



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
Да хотел еще реализовать вот такую штуку. (Про % в прогрессбаре лучше промолчу)) »
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


Пользователь


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, Спасибо, посмотрю.

А не подскажите.
У меня вот такое убивание процесса при удалении.

Код: Выделить весь код
[UninstallRun]
Filename: "{sys}\taskkill.exe"; Parameters: "/f /im SSDToolBox.exe /t";
Где-то читал, что так не рекомендуется с taskkill.exe.

Может есть какое более правильное решение.

Отправлено: 00:36, 20-11-2022 | #953


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
Может есть какое более правильное решение. »
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


Пользователь


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, Спасибо! Попробую.
Что-то кнопки "Полезное сообщение" пропали. Хотел нажать, а их нет. У меня наверно лимит превышен )

Отправлено: 01:50, 20-11-2022 | #955


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
Что-то кнопки "Полезное сообщение" пропали. Хотел нажать, а их нет. У меня наверно лимит превышен ) »
DA-Bro, да, лимит превышен. Появится через определенное время...

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:51, 20-11-2022 | #956


Пользователь


Сообщения: 96
Благодарности: 17

Профиль | Отправить 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


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
Что-то вроде этого. »
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


Пользователь


Сообщения: 96
Благодарности: 17

Профиль | Отправить PM | Цитировать


Vanadiy777, Спасибо! Помогло. Даже очень.

Подскажите пожалуйста, ещё вот такая загвоздка.

В языковом файле есть такая строчка:

[Messages]
; *** Application titles
SetupWindowTitle=%1

Название программы отображается.
А как сделать чтобы название и версия программы отображались.

Я и так SetupWindowTitle=%1 %2 и так SetupWindowTitle=[name/ver] пробовал подставлять.
Это не срабатывает.

Отправлено: 15:16, 18-12-2022 | #959


Аватара для Vanadiy777

Ветеран


Сообщения: 2186
Благодарности: 877

Профиль | Отправить PM | Цитировать


Цитата DA-Bro:
А как сделать чтобы название и версия программы отображались. »
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



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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




 
Переход