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

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

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

Ветеран


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


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

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


Изменения
Автор: jameszero
Дата: 08-11-2010
Описание: тема закрыта
Лимит страниц.
Тема закрыта.
Продолжение по ссылке Скрипты Inno Setup. Помощь и советы [часть 3]




Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


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

  • Inno Script Generator - ещё один редактор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать;

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы. Официальный сайт - недоступен.
    Последняя версия: 2.0.8 [12.11.2006] - Страница с зеркалами;

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

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

  • InnoSetup Script Joiner - Программа для объединения нескольких скриптов InnoSetup в один;

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


Ссылка на архив предыдущей темы (также можно скачать из вложения)

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 22:06, 23-08-2009

 

Ветеран


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

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


Цитата Winstan:
Полностью ее переделал осталось пб сделать и все. »
А чем вам стандартный не нравиться?
Цитата Winstan:
можно ли добавить еще 2 стр. которые буду отвечать за »
Придётся писать всё руками... MyForm: TUninstallProgressForm; и т.д и т.п.
Цитата Winstan:
запрос о удаление и за сообщение о том что удалены фалы? »
Я думаю, в таком случае проще реализовать простые сообщения, т.е. при нахождении папки или файлов, с предложением удалить и если пользователь выбрал Да - то удалять. В конце деинсталляции выдовать сообщение об удачном удалении папки...

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

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

Отправлено: 00:35, 14-12-2009 | #661



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

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


Ветеран


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

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


Serega,
Цитата Serega:
Неправда, именно это работает... »
У меня и в мыслях не было Вас обманывать. Но у меня не работает. Или можно сказать, что работает неполностью. Дело в том, что если я снимаю чекбокс с a\e\a, то пропадает изображение чекбокса и в a\e, но общий размер в а отображается как при снятом одном чекбоксе a\e\a. Если я после этого снимаю пустой(но, якобы стоящий там) чекбокс a\e, то общий размер а ещё уменьшается.
Я приложил скриншоты и скрипт, чтоб Вы не думали будто я Вас обманываю.
И подскажите пожалуйста почему у меня может быть такая картина и как её исправить.

Последний раз редактировалось МИШАНЧИК, 20-11-2010 в 07:03.


Отправлено: 08:34, 14-12-2009 | #662


Аватара для Winstan

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


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

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


Цитата Serega:
А чем вам стандартный не нравиться? »
Он то мне нравиться но изображение перекрывает все, точнее я все отключил, а то получается то что весит белое окно.
Цитата Serega:
Придётся писать всё руками... MyForm: TUninstallProgressForm; и т.д и т.п. »
Попробую написать.
Цитата Serega:
Я думаю, в таком случае проще реализовать простые сообщения, т.е. при нахождении папки или файлов, с предложением удалить и если пользователь выбрал Да - то удалять. В конце деинсталляции выдовать сообщение об удачном удалении папки... »
Они сейчас появляются, спрашивают удалить или нет и о том что уже удалил файлы.

И еше подскажи процедуру на окошко выбора языков инстала?

Отправлено: 08:50, 14-12-2009 | #663


Аватара для Dark Engel

Старожил


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

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


Цитата Serega:
Цитата Dark Engel:
Где ключ это признак установленности программы, а значение это версия. »
Пример »
Гм. Что то данный пример не отрабатывает. установка проходит молча без каких либо вопросов. Ключ в реестре создавал.

1. Какого типа должен быть ключ в реестре? (Dword, REG_SZ итд )
2. Можно ли добавить создание ключа в случае его отсутствия (Первая установка программы).

-------

"Чем больше мы умнеем, тем больше понимаем что мы глупцы."


Отправлено: 09:40, 14-12-2009 | #664


Ветеран


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

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


Цитата МИШАНЧИК:
Дело в том, что если я снимаю чекбокс с a\e\a, то пропадает изображение чекбокса и в a\e, но общий размер в а отображается как при снятом одном чекбоксе a\e\a. Если я после этого снимаю пустой(но, якобы стоящий там) чекбокс a\e, то общий размер а ещё уменьшается. »
Я понял, что вы имеете ввиду, просто у чебоксов имеющих дочерние элементы, существует три состояния (Unchecked, Checked, Grayed) и на скриншотах, которые вы показали (2.jpg), при снятом дочернем элементе, состояние a\e = Grayed, т.е. квадрат закрашен. Присмотритесь к компоненту a, у него тоже состояние Grayed.

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.

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

Отправлено: 19:27, 14-12-2009 | #665


Ветеран


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

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


Цитата Winstan:
процедуру на окошко выбора языков инстала? »
Не знаю, покрайней мере я такой не нашёл, т.е. даже попытался осуществить поиск через FindWindowByWindowName в function InitializeSetup, но диалог с выбором языка отрабатывает до того, как задействуется function InitializeSetup...
От сюда, два выхода, самый простой через редактор ресурсов, второй пишите инсталлятор пустышку, который будет запускать ваш инсталлятор и осуществлять поиск диалогового окна, а затем уже производить манипуляции с диалоговым окном через SendMessage.

Цитата Dark Engel:
Что то данный пример не отрабатывает. установка проходит молча без каких либо вопросов. Ключ в реестре создавал »
Прежде всего, я был удивлён когда вы просили осуществить поиск таким образом:
Код: Выделить весь код
HKLM\Software\UIT\FAP\
                     \proga1 (Reg_Dword) 1
                     \proga2 (Reg_Dword) 15
                     \proga3 (Reg_Dword) 3
т.е. поиск ключа производится:
HKEY_LOCAL_MACHINE\SOFTWARE\UIT\FAP\proga 1
где proga - название программы, а 1 - это версия.
В скрипте же это написано...

P.S.
Я кажется понял, вы наверно заносите:
Код: Выделить весь код
[HKEY_LOCAL_MACHINE\SOFTWARE\UIT\FAP]
"proga1"=dword:00000001
"proga2"=dword:00000015
"proga3"=dword:00000003
но это совершенно отличается от того, что вы просили.

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 20:11, 14-12-2009 | #666


Аватара для Dark Engel

Старожил


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

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


Цитата Serega:
Цитата Dark Engel:
Что то данный пример не отрабатывает. установка проходит молча без каких либо вопросов. Ключ в реестре создавал »
Прежде всего, я был удивлён когда вы просили осуществить поиск таким образом:
Код:
HKLM\Software\UIT\FAP\
\proga1 (Reg_Dword) 1
\proga2 (Reg_Dword) 15
\proga3 (Reg_Dword) 3т.е. поиск ключа производится:
HKEY_LOCAL_MACHINE\SOFTWARE\UIT\FAP\proga 1
где proga - название программы, а 1 - это версия.
В скрипте же это написано...
P.S.
Я кажется понял, вы наверно заносите:
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\UIT\FAP]
"proga1"=dword:00000001
"proga2"=dword:00000015
"proga3"=dword:00000003но это совершенно отличается от того, что вы просили. »
Вы правы. Я неправильно поставил задачу. Если вас не затруднит, подскажите пожалуйста как все таки реализовать мой вопрос.

-------

"Чем больше мы умнеем, тем больше понимаем что мы глупцы."


Отправлено: 08:07, 15-12-2009 | #667


Аватара для R.i.m.s.k.y.

Ветеран


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

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


Доброе время суток!

Есть самописный скриптик для определения конфигурации компа и применения трех разных reg-файликов.

читать дальше »

[Setup]
AppName=test
AppVerName=test
AppPublisher=test
AppPublisherURL=test
AppSupportURL=test
AppUpdatesURL=test
CreateAppDir=no
OutputBaseFilename=test
Compression=lzma
SolidCompression=yes

[Languages]
Name: "russian"; MessagesFile: "compiler:Default.isl"

[Files]
Source: RimPack\Program Files\RimPack\FFDShow\*.reg; DestDir: {tmp}; Flags: ignoreversion uninsrestartdelete setntfscompression
Source: RimPack\Program Files\RimPack\FFDShow\gnu_license.txt; DestDir: {tmp}; AfterInstall: FFD; Flags: ignoreversion uninsrestartdelete setntfscompression

[code]
function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';

const
NeedMHz0 = 2590;
NeedMHz1 = 1090;

Procedure FFD();

var
resffd, MHz : integer;
hz : Cardinal;
Keys: TArrayOfString;
regffd, reg0ffd, RegEditffd: string;

begin

RegEditffd:= ExpandConstant('{sys}\reg.exe'); reg0ffd:= ExpandConstant('{tmp}\');
regffd := reg0ffd + 'ffdshow.reg';
Exec(RegEditffd, ' import ' + AddQuotes(regffd),ExpandConstant('{sys}'),SW_HIDE, ewNoWait, resffd);

RegGetSubkeyNames(HKLM, 'Hardware\Description\System\CentralProcessor', Keys); // Количество ядер
RegQueryDWordValue(HKLM, 'Hardware\Description\System\CentralProcessor\0', '~MHz', hz);

If (GetArrayLength(Keys) >= 2) and (Hz > NeedMHz0) then
begin MsgBox('Max', mbInformation, mb_Ok);
regffd := reg0ffd + 'ffdshow0.reg';
Exec(RegEditffd, ' import ' + AddQuotes(regffd),ExpandConstant('{sys}'),SW_HIDE,ewNoWait,resffd);
end;

If (GetArrayLength(Keys) >= 2) and (Hz > NeedMHz1) and (Hz < NeedMHz0) then
begin MsgBox('Middle', mbInformation, mb_Ok);
regffd := reg0ffd + 'ffdshow1.reg';
Exec(RegEditffd, ' import ' + AddQuotes(regffd),ExpandConstant('{sys}'),SW_HIDE,ewNoWait,resffd);
end;

If (GetArrayLength(Keys) < 2) and (hz <= NeedMHz1) then
begin MsgBox('Low', mbInformation, mb_Ok);
regffd := reg0ffd + 'ffdshow2.reg';
Exec(RegEditffd, ' import ' + AddQuotes(regffd),ExpandConstant('{sys}'),SW_HIDE,ewNoWait,resffd);
end;

RegWriteDWordValue(HKEY_CURRENT_USER, 'Software\GNU\ffdshow\default', 'resizeDx', GetSystemMetrics(0));

end;

end.


Этот код работает если только его вынести в отдельный скрипт, но в нужном скрипте - работает, но странно: reg-файлы или не применяются, или ffdshow.reg (250Кб) заносится в реестр не полностью!
Как будто не успевает процедура FFD отработать.

Вижу два варианта решения - или как-то увеличить время выполнения или в секции Code только узнать конфигурацию железа, а в секции Run сделать reg import в зависимости от конфигурации.

Собственно вопросы - как увеличить время выполнения кода и как передать переменные из секции Code в секцию Run.

Заранее спасибо!

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!


Отправлено: 08:56, 15-12-2009 | #668


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


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

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


Добрый день!

Я столкнулся с интересной проблемой Inno Setup. Мне необходимо изменить окно UNinstaller-а (UninstallProgressForm), чтобы пользователь имел возможность указать причину, по которой он удаляет мое приложение. Убрать существующие контролы и вставить свои - это ерунда. Вопрос вот в чем: как сделать, чтобы после завершения деинсталляции окно анинсталлера не закрывалось и пользователь мог, закончив описание причины, кнопочкой, скажем, "Finish" его закрыть самостоятельно, тем замым завершив процесс деинсталляции?

PS: Да, и небольшой вопрос другого характера: никто не сталкивался с проблемами использования CustomMessages в анинсталлере под Windows 7 (у меня x64 Ultimate)? У меня на этапе компиляции скрипта вылетает окошко с сообщением о том, что имя константы неверно...

Заранее спасибо за ответы!

Отправлено: 11:21, 15-12-2009 | #669


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


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

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


Взял код из примера по созданию дополнительной папки для пользовательских данных.
Нужна дополнительная, следующая страница подобная созданой.
Подскажите как перейти?

читать дальше »

Код: Выделить весь код
//Определяем дополнительную страницу для Project (с кнопкой «Обзор…»)
var
  ProjectDirPage: TInputDirWizardPage;

procedure InitializeWizardCWP();
begin
//Создание дополнительной страницы после указанной wpSelectProgramGroup
  ProjectDirPage := CreateInputDirPage(wpSelectProgramGroup,
    'Выбор папки с проектами', 'В какой папке будут находиться проекты программы?',
    'Пожалуйста, укажите папку, в которой будут сохранены проекты программы.'#13#13'Путь к папке с проектами может быть изменен в "ххх">"ххх".',
    False, '');
  ProjectDirPage.Add('');
  ProjectDirPage.Values[0] := GetPreviousData('ProjectDir', '');
end;

function NextButtonClick(CurPage: Integer): Boolean;
begin
 if ProjectDirPage.Values[0] = ''
  then
//   Указываем путь папки с проектами по умолчанию
     ProjectDirPage.Values[0] := (ExpandConstant('{sd}')+'\Projects');
  Result := True;
end;

function GetProjectDir(Param: String): String;
begin
  Result := ProjectDirPage.Values[0];
end;


//   ------- Где то здесь начинается беда...

//Определяем дополнительную страницу для VST (с кнопкой «Обзор…»)
var
  VSTDirPage: TInputDirWizardPage;

procedure InitializeWizardVST();
begin
//Создание дополнительной страницы после указанной wpSelectProgramGroup
  VSTDirPage := CreateInputDirPage(wpSelectProgramGroup,
//                                  ^^^^^ тут указать предыдущую страницу? как?
    'Выбор папки с VST Plugins', 'В какой папке будут находиться VST Plugins?',
    'Пожалуйста, укажите папку, в которую будут VST Plugins.'#13#13'Путь к папке с VST Plugins может быть изменен в "ххх">"ххх".',
    False, '');
  VSTDirPage.Add('');
  VSTDirPage.Values[0] := GetPreviousData('VSTDir', '');
end;

function NextButtonClick2(CurPage: Integer): Boolean;
begin
 if VSTDirPage.Values[0] = ''
  then
//   Указываем путь к папке VST Plugins
     VSTDirPage.Values[0] := (ExpandConstant('{pf}')+'\VSTPlugins');
  Result := True;
end;

function GetVSTDir(Param: String): String;
begin
  Result := VSTDirPage.Values[0];
end;

// ***************************************************************************************************************************************

//Это страница, в которой отображаются выбранные параметры установки
//Чтобы в нее прописать указанный путь установки папки с проектами, пишем следующую функцию
//По необходимости указываем дополнительные параметры установки (компоненты и т.п.)

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
  S: String;
begin
  S := S + MemoDirInfo;
  S := S + NewLine + NewLine;
  S := S + 'Папка с проектами:' + NewLine + Space;
  S := S + ProjectDirPage.Values[0];
  S := S + 'VST Plugins:' + NewLine + Space;
  S := S + ProjectDirPage.Values[0];
  Result := S;
end;


Если оставить как есть компилируется, но при запуске выдаёт сообщение:

Runtime Error (at 6:57)
Could not call proc.

Последний раз редактировалось SinRoma, 15-12-2009 в 12:38.


Отправлено: 12:20, 15-12-2009 | #670



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты Inno Setup. Помощь и советы [часть 3] Serega Автоматическая установка приложений 3755 26-10-2011 17:58
[архив] Inno Setup .:[все вопросы]:. Mchik Автоматическая установка приложений 1329 23-08-2009 20:13
[архив - Часть 2] AutoIt скрипты Vadikan AutoIt 985 21-01-2008 09:58
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход