Имя пользователя:
Пароль:
 | Правила  

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 22-10-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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.2.0 [23.09.2014] - Скачать;



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

Скрипты Inno Setup. Помощь и советы [часть 6]
Скрипты Inno Setup. Помощь и советы [часть 7]

Отправлено: 08:52, 02-02-2015

 

Аватара для ZVSRus

Старожил


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

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


Требуется помощь.
Скрытый текст

Source: "{app}\msimg32.dll"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion sharedfile uninsnosharedfileprompt
Данная DLL'ка добавлена в дистрибутив для регистрации. DLL'ка с таким-же именем есть в System32/
При удалении программы dll'ка не удаляется. Решение найдено такое.
Код: Выделить весь код
[UninstallDelete]
 Type: files; Name: "{app}\msimg32.dll";
 
Procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);                                                       
begin                                                                                                                      
 if (CurUninstallStep = usPostUninstall)  then                                                                             
  UnloadDLL(ExpandConstant('{app}\msimg32.dll'));                                                                          
  DeleteFile(ExpandConstant('{app}\msimg32.dll'));                                                                         
//  MoveDir(ExpandConstant('{app}\'),ExpandConstant('{app}')); 
  RemoveDir(ExpandConstant('{app}')); 
  DelTree(ExpandConstant('{app}'), True, True, True);                                                                      
  RemoveDir(ExpandConstant('{pf}\ObviousIdea'));
После данной процедуры все удаляется в чистую, но сообщение Деинсталляция %1 завершена.%n%nЧасть элементов не удалось удалить. Вы можете удалить их самостоятельно. как было так и осталось, хотя нигде ничего нету.
Решение нашёл такое.

[Messages]
UninstalledMost=Программа %1 была полностью удалена с вашего компьютера.

Думаю что данное решение не совсем правильное.
В связи с тем что в System32 есть DLL'ка с таким -же именем что и для регистрации, думаю что деинсталлятор реагирует на нее и по этому выдаёт сообщение что не все удалилось.
Думаю к строке Source: нужно добавить какие то флаги, чтобы деинсталлятор не реагировал на системную DLL msimg32.dll.
Помогите решить данную проблему.

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode


Отправлено: 18:59, 19-02-2016 | #1351



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

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


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

Ветеран


Contributor


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

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


Цитата Raf-9600:
Нашёл вроде бы неплохой код для проверки на наличие определённого обновления Windows https://theroadtodelphi.wordpress.co...i-wmi-and-wua/ »
Raf-9600, он плох тем, что, во-первых, долго выполняется метод Search, на моей Windows 7 x64 ~15 мин, на XP ~2 мин, во-вторых, сравнивать параметр функции со свойством Title не есть хорошо, нужно использовать KBArticleIDs.
Скрытый текст

Код: Выделить весь код
//////////////////////////////////////////////////////////////
function IsHotFixIDInstalled(const HotFixID: string): Boolean;
var
  UpdateSession, UpdateSearcher, UpdateSearchResult,
  UpdateCollection, UpdateItem: Variant;
  i, j, UpdatesCount: Integer;
begin
  Result := False;
  UpdateSession := CreateOleObject('Microsoft.Update.Session');
  UpdateSearcher := UpdateSession.CreateUpdateSearcher;
  UpdateSearcher.Online := False;
  UpdateSearchResult := UpdateSearcher.Search('IsInstalled = 1 and Type=''Software''');
  UpdateCollection := UpdateSearchResult.Updates;
  UpdatesCount := StrToIntDef(UpdateCollection.Count, 0);
  for i := 0 to UpdatesCount - 1 do
  begin
    UpdateItem := UpdateCollection.Item[i];
    for j := 0 to UpdateItem.KBArticleIDs.Count - 1 do
    begin
      Result := (CompareText(string(UpdateItem.KBArticleIDs.Item[j]), HotFixID) = 0);
      if Result then Exit;
    end;
  end;
end;

///////////////////////////
procedure InitializeWizard;
begin
  if IsHotFixIDInstalled('2483139') then
    MsgBox('yes', mbInformation, MB_OK);
end;

Цитата ZVSRus:
Source: "{app}\msimg32.dll"; DestDir: "{app}"; MinVersion: 0.0,5.0; Flags: ignoreversion sharedfile uninsnosharedfileprompt
Данная DLL'ка добавлена в дистрибутив для регистрации. DLL'ка с таким-же именем есть в System32/ »
ZVSRus, ну и зачем ее [msimg32.dll] копия в {app}? Или не копия? И зачем заводить еще и счетчик ссылок?
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:08, 19-02-2016 | #1352


Аватара для ZVSRus

Старожил


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

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


Цитата El Sanchez:
ну и зачем ее [msimg32.dll] копия в {app}? Или не копия?
Нет эта DLL (msimg32.dll) не копия, идет в архиве с программой для регистрации.
(Поместить файл из раздачи msimg32.dll в папку с установленной программой.)

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode


Последний раз редактировалось ZVSRus, 22-03-2016 в 12:35.


Отправлено: 20:35, 19-02-2016 | #1353


Забанен


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

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


ребята если у меня не сколько вот таких секций то как их объединить?
procedure CurPageChanged(CurPageID: Integer)

а, то выдаёт ошибку

Отправлено: 11:24, 21-02-2016 | #1354


Аватара для kotyarko@fb

Старожил


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

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


vadjliss,
Код: Выделить весь код
Procedure CurPageChanged1(CurPageID: Integer);
begin
 ...
end;

Procedure CurPageChanged2(CurPageID: Integer);
begin
 ...
end;

Procedure CurPageChanged(CurPageID: Integer);
begin
 CurPageChanged1(CurPageID);
 CurPageChanged2(CurPageID);
end;

-------
http://forum.worldoftanks.ru/topic/1429925-/
Исходник моего установщика: https://bitbucket.org/Kotyarko_O/kmp

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

Отправлено: 12:28, 21-02-2016 | #1355


Аватара для nik1967

Старожил


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

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


vadjliss, а лучше всё в одной процедуре объединить. Чтобы путаницы не было.

-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение".


Отправлено: 20:07, 21-02-2016 | #1356


Ветеран


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

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


Цитата vadjliss:
ребята если у меня не сколько вот таких секций то как их объединить?
procedure CurPageChanged(CurPageID: Integer) »
Выполнять все задачи в блоке одной процедуры. Так будет намного удобней, и в плане читаемости кода особенно.
Код: Выделить весь код
procedure CurPageChanged( CurPageID: Integer );
begin
   задача 1
   задача 2
end;

procedure CurPageChanged( CurPageID: Integer );
begin
   задача 3
   задача 4
end;

procedure CurPageChanged( CurPageID: Integer );
begin
    задача 1
    задача 2
    задача 3
    задача 4
end;
Ой, nik1967 уже пояснил. Ну да ладно.)
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:09, 21-02-2016 | #1357


Новый участник


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

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


Добрый день. Подскажите пожалуйста, какие команды нужно дописать в скрипт, чтобы в случае если в директории установки программы будет найден файл с определенным именем, он будет удален автоматически. И еще одна проблемка. Если знаете, помогите плис. Столкнулся с тем, что Win10 блокирует инсталлятор. Тут я вообще безсилен, так как никогда не работал с этой ОС.

Отправлено: 16:25, 24-02-2016 | #1358


Новый участник


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

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



Снимок экрана (51).pngКак сделать такой компонент ?

Отправлено: 17:03, 24-02-2016 | #1359


Аватара для ZVSRus

Старожил


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

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


Цитата Gamattinol:
Как сделать такой компонент ?
script

Код: Выделить весь код
[Setup]
 AppName=Notepad
 AppVersion=1.5
 DefaultDirName={pf}\Notepad

[Code*]
var
  NewGroupBox: TNewGroupBox;

procedure InitializeWizard();
begin
  NewGroupBox := TNewGroupBox.Create(WizardForm);
  with NewGroupBox do
  begin
    Parent := WizardForm.SelectDirPage;
    Left := ScaleX(0);
    Top := ScaleY(100);
    Width := ScaleX(417);
    Height := ScaleY(60);
    Caption := 'Папка установки:';
  end;

  NewGroupBox.TabOrder := 5;

  with WizardForm.DirBrowseButton do
  begin
    Left := ScaleX(334);
    Top := ScaleY(23);
    Parent := NewGroupBox;
  end;

  with WizardForm.DirEdit do
  begin
    Left := ScaleX(8);
    Top := ScaleY(24);
    Width := ScaleX(320);
    Parent := NewGroupBox;
  end;
end;

-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode

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

Отправлено: 18:20, 24-02-2016 | #1360



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

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

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




 
Переход