Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )


> Написание скрипта для инсталлятора
Гость_Kindly_*
сообщение 17:03:2005, 16:05
Цитата Ответить 





Инопланетный гость






    


(Вопрос по Inno Setup 5) Я извиняюсь за вопрос немножко не в тему. Меня интереcует написание скрипта на Pascal следующего характера: Перед запуском инсталлятора нужна проверка реестра на определённый ключ, и если он существует - должен запускаться мастер инсталляции, а если ключ не существует, то должна вылетать мессага, что прога не найдена - жмите OK чтобы покинуть мастер (ну или другой текст). Вобщем вы программеры - для вас скриптик или только секцию кода написать не составит труда. Поможете такому как мне?
mailto:gubei_vadim@list.ru
Подняться вверх 
 
Сообщение #1
10 страниц V  « < 2 3 4 5 6 > »   
Новая тема 
Ответов (90 - 119)
Гость_Guest_*
сообщение 14:07:2005, 10:34
Цитата Ответить 





Инопланетный гость






    


To Zubr:

Из FAQ для Inno Setup:
Вопрос: Что именно происходит, если пользователь нажмет Cancel в процессе установки?
Ответ: При нажатии Cancel инсталятор отменяет изменения, сделанные им в ходе установки, почти как деинсталятор при удалении программы. Поэтому частично установленное приложение не останется в системе пользователя.

В этом-то мой вопрос и состоит, как избежать того, о чём говорится в ответе FAQ...
Подняться вверх 
 
Сообщение #91
Гость_Kindly_*
сообщение 14:07:2005, 14:27
Цитата Ответить 





Инопланетный гость






    


zubr
Цитата
Требуется поместить CheckBox на панель выбора директории для установки, допустим под строкой отображаемого пути и задать ему выполнение, например, включение/отключение функции MyProgCheck.

Похоже, неправильно дал пояснение... Имеется в виду, что функция, которая должна выполнятся через CheckBox, должна выполняться непосредственно при установке - не сразу, на подобии выбора компонентов. Такое можно проделать?
Подняться вверх 
 
Сообщение #92
zubr
Вставить ник
сообщение 14:07:2005, 15:26
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Цитата
Я не знаю, какую версию вы используете, но в версии 5.14 внесение любых изменений чревато сообщением о поврежденном инсталляторе, и в FAQ ясно написано, что сам инсталлятор имеет проверку изменения собственной CRC суммы  .

Пришлите мне свой инсталлятор, я его пропатчу.
Подняться вверх 
 
Сообщение #93
zubr
Вставить ник
сообщение 14:07:2005, 15:33
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Цитата
Похоже, неправильно дал пояснение... Имеется в виду, что функция, которая должна выполнятся через CheckBox, должна выполняться непосредственно при установке - не сразу, на подобии выбора компонентов. Такое можно проделать?

Можно, будет время кину код.
Цитата
Из FAQ для Inno Setup:
Вопрос: Что именно происходит, если пользователь нажмет Cancel в процессе установки?
Ответ: При нажатии Cancel инсталятор отменяет изменения, сделанные им в ходе установки, почти как деинсталятор при удалении программы. Поэтому частично установленное приложение не останется в системе пользователя.

В этом-то мой вопрос и состоит, как избежать того, о чём говорится в ответе FAQ...

Ну так глубоко я не копал. Сейчас у меня срочная работа, разгребусь, посмотрю.
Подняться вверх 
 
Сообщение #94
zubr
Вставить ник
сообщение 15:07:2005, 04:02
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Вот пропатченный файл инсталлятора:
Прикрепленные файлы
Прикрепленный файл  setup.zip ( 255.64 килобайт ) Кол-во скачиваний: 169
 
Подняться вверх 
 
Сообщение #95
Гость_Kindly_*
сообщение 15:07:2005, 06:02
Цитата Ответить 





Инопланетный гость






    


Извиняюсь... Не прав был. Оказывается можно в свойствах файла применить акт "вандализма", только аккуратно (желательно сохранять количество символов в строке). Ну, буду исправлятьсяsmile.gif:

В Resource Hacker-e для отображения авторских прав нужно вставить в ресурсе "Version Info" под строкой:
VALUE "InternalName"
следующее:
VALUE "LegalCopyright", "My Rights" \\где My Rights - типа авторство

Чтобы сделать русский язык в свойствах пишем там же вместо

VALUE "Translation", 0x0409 0x04E4
=>
VALUE "Translation", 0x0419 0x04E4

Производитель:
VALUE "CompanyName", "Заполняем пустые поля"

Или так:

VALUE "Автор инсталлятора", "I'm"

p.s. а проверка на изменение все-таки есть, только, видимо, не такая чувствительная.
p.p.s. удаление контекста "About..." забавно, но в "пропатченом" инсталляторе этого не наблюдалось.
Подняться вверх 
 
Сообщение #96
Гость_Guest_Юрий_*_*
сообщение 15:07:2005, 10:40
Цитата Ответить 





Инопланетный гость






    


To Kindly: smile.gif
Подняться вверх 
 
Сообщение #97
Гость_Guest_*
сообщение 15:07:2005, 10:42
Цитата Ответить 





Инопланетный гость






    


To zubr:

оК
Подняться вверх 
 
Сообщение #98
Гость_Kindly_*
сообщение 16:07:2005, 06:13
Цитата Ответить 





Инопланетный гость






    


Может, следующий вопрос из-за моей невнимательности, но тем не менее.
Ярлыки, создаваемые в меню "Пуск" зачастую (особенно если их много) могут быть расформированы как угодно. Вопрос: можно ли конкретно задать размещение ярлыков в панели "Пуск" в определенном порядке?
Подняться вверх 
 
Сообщение #99
Гость_Guest_Юрий_*_*
сообщение 18:07:2005, 12:31
Цитата Ответить 





Инопланетный гость






    


очень захотелось "убить" MessageBox, предупреждающий об удалении файлов перед деинсталляцией, а именно "Are you sure you want to completely remove %1 and all of its components?"... Как сделать так, чтобы подтвержения на удаление не требовалось (соответственно и окно требования подтвержения не появлялось)?
Подняться вверх 
 
Сообщение #100
zubr
Вставить ник
сообщение 18:07:2005, 20:07
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Цитата
Похоже, неправильно дал пояснение... Имеется в виду, что функция, которая должна выполнятся через CheckBox, должна выполняться непосредственно при установке - не сразу, на подобии выбора компонентов. Такое можно проделать?

Вот код:
var
  b_cb:boolean;

function InitializeSetup(): Boolean;
begin
b_cb:=False;
Result:=True;
end;

procedure cdClick(Sender: TObject);
begin
b_cb:=cb.CHECKED;
end;


procedure CurPageChanged(CurPageID: Integer);
var
 i:Integer;
begin
If CurPageID=wpSelectDir then
begin
 If cb=nil then
 begin
  cb:=TCheckBox.Create(WizardForm);
  cb.Parent:=WizardForm;
  cb.Left:=WizardForm.SELECTDIRLABEL.Left;
  cb.Top:=ScaleY(180);
  cb.CAPTION:='MyCheckBox';
  cb.ONCLICK:=@cdClick;
 end;
end
else
begin
 If cb<>nil then
 begin
  cb.Free;
  cb:=nil;
 end;
end;
If CurPageID=wpInstalling then
begin
 If b_cb then
 MsgBox('cb.CHECKED', mbInformation, MB_OK)
 else
 MsgBox('not cb.CHECKED', mbInformation, MB_OK)
end;
end;

Цитата
Из FAQ для Inno Setup:
Вопрос: Что именно происходит, если пользователь нажмет Cancel в процессе установки?
Ответ: При нажатии Cancel инсталятор отменяет изменения, сделанные им в ходе установки, почти как деинсталятор при удалении программы. Поэтому частично установленное приложение не останется в системе пользователя.

В этом-то мой вопрос и состоит, как избежать того, о чём говорится в ответе FAQ...

Пришлите код скрипта, у меня почему то при переустановке ничего не удаляется.
Цитата
Может, следующий вопрос из-за моей невнимательности, но тем не менее.
Ярлыки, создаваемые в меню "Пуск" зачастую (особенно если их много) могут быть расформированы как угодно. Вопрос: можно ли конкретно задать размещение ярлыков в панели "Пуск" в определенном порядке?

Создавайте свою группу, в которую помещайте устанавливаемые программы.
Цитата
очень захотелось "убить" MessageBox, предупреждающий об удалении файлов перед деинсталляцией, а именно "Are you sure you want to completely remove %1 and all of its components?"... Как сделать так, чтобы подтвержения на удаление не требовалось (соответственно и окно требования подтвержения не появлялось)?

Не получится, можно только текст изменить.
Подняться вверх 
 
Сообщение #101
Гость_Guest_Юрий_*_*
сообщение 19:07:2005, 05:01
Цитата Ответить 





Инопланетный гость






    


To Zubr:

[Setup]
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.mycompany.com
AppSupportURL=http://www.mycompany.com
AppUpdatesURL=http://www.mycompany.com
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Types]
Name: custom; Description: Custom installation; Flags: iscustom

[Components]
Name: group; Description: Header; Types: custom; Flags: disablenouninstallwarning
Name: group\file1; Description: Sub-Header 1; Types: custom; Flags: disablenouninstallwarning;
Name: group\file2; Description: Sub-Header 2; Types: custom; Flags: disablenouninstallwarning;
Name: group\file3; Description: Sub-Header 3; Types: custom; Flags: disablenouninstallwarning;
Name: group\file4; Description: Sub-Header 4; Types: custom; Flags: disablenouninstallwarning;

[Files]
Source: C:\Works\CreateInstall\a.exe; Components: group\file1; DestDir: {app}; Attribs: readonly; Flags: onlyifdoesntexist uninsremovereadonly
Source: C:\Works\CreateInstall\b.exe; Components: group\file2; DestDir: {app}; Attribs: readonly; Flags: onlyifdoesntexist uninsremovereadonly
Source: C:\Works\CreateInstall\c.exe; Components: group\file3; DestDir: {app}; Attribs: readonly; Flags: onlyifdoesntexist uninsremovereadonly
Source: C:\Works\CreateInstall\d.exe; Components: group\file4; DestDir: {app}; Attribs: readonly; Flags: onlyifdoesntexist uninsremovereadonly

[InstallDelete]
Name: {app}\a.exe; Type: files; Components:
Name: {app}\b.exe; Type: files; Components:
Name: {app}\c.exe; Type: files; Components:
Name: {app}\d.exe; Type: files; Components:


примерно такой вот упрощённый код даёт удаление заранее установленных компонентов...

Последовательность:
1. Установить какой-то один компонент
2. Закончить работу с инсталлятором
3. Запустить инсталлятор вновь
4. Выбрать какой-то ещё не установленный компонент и начать процесс его установки
5. До того момента, как этот компонент установился, нажать Отмена
6. Пойдёт откат
7. Смотрим в папку с установленной программой, компонентов нет (ни заранее установленных, ни того, процесс установки которого прервали)
Подняться вверх 
 
Сообщение #102
Гость_Kindly_*
сообщение 19:07:2005, 05:55
Цитата Ответить 





Инопланетный гость






    


zubr
Цитата
Создавайте свою группу, в которую помещайте устанавливаемые программы.

В смысле? Так группа с ярлыками и создается, а после установки ярлыки могут быть в разнобой huh.gif , например: "Удалить" может быть в середине программной группы (особенно если ярлыков много). Хотелось бы знать, имеется ли возможность назначения последовательности размещения ярлыков в программной группе с ярлыками.
Подняться вверх 
 
Сообщение #103
Гость_Guest_Юрий_*_*
сообщение 19:07:2005, 06:18
Цитата Ответить 





Инопланетный гость






    


To Kindly:

Цитата
В смысле? Так группа с ярлыками и создается, а после установки ярлыки могут быть в разнобой  , например: "Удалить" может быть в середине программной группы (особенно если ярлыков много). Хотелось бы знать, имеется ли возможность назначения последовательности размещения ярлыков в программной группе с ярлыками.


по-моему, размещение ярлыков определяется сортировкой, заданной Вами же для меню Пуск...
Подняться вверх 
 
Сообщение #104
Гость_Guest_Юрий_*_*
сообщение 19:07:2005, 13:41
Цитата Ответить 





Инопланетный гость






    


Код был представлен с ошибкой... Конечно же в секции [InstallDelete]
должны быть следующие продолжения строк:
Components: group\file1;
Components: group\file2;
Components: group\file3;
Components: group\file4;


В данном случае, это не суть важно, т.к. проблема с удалением предустановленных файлов всё равно есть...
Подняться вверх 
 
Сообщение #105
Гость_Kindly_*
сообщение 20:07:2005, 05:46
Цитата Ответить 





Инопланетный гость






    


zubr CheckBox
Спасибо! Все просто замечательно! Немного доработки - и у меня оказалось то, чего я давно хотел. Но вопросы "по-мелочи" у меня все же есть:
1. Можно ли как-нибудь отключить страницу Приветствия?
2. Существует ли вообще в Inno Setup функции отключения видимости или задействования кнопок (например, как на странице принятия лицензионного соглащения)?
Подняться вверх 
 
Сообщение #106
Гость_Guest_Юрий_*_*
сообщение 20:07:2005, 07:26
Цитата Ответить 





Инопланетный гость






    


To Kindly:

Цитата
1. Можно ли как-нибудь отключить страницу Приветствия?
2. Существует ли вообще в Inno Setup функции отключения видимости или задействования кнопок (например, как на странице принятия лицензионного соглащения)?


1. страница приветствия отключается при помощи
[Setup]
DisableStartupPrompt=yes


2. на примере для кнопки "Назад" Мастера можно задисэйблить при помощи следующего кода в секции
:
[CODE]procedure InitializeWizard();
begin
   WizardForm.BackButton.Enabled := False;
end;


для кнопки "Далее" надо устанавливать конкретные страницы Мастера, где произойдёт изменение её состояния (т.к. принимая Лицензионное соглашение кнопа автоматом становится доступной)...
Подняться вверх 
 
Сообщение #107
Гость_Kindly_*
сообщение 21:07:2005, 17:01
Цитата Ответить 





Инопланетный гость






    


Guest_Юрий_*,
Цитата
[Setup]
DisableStartupPrompt=yes

отключает только сообщение при инициализации, а не страницу приветствия.
Насчет кнопок, спасибо за намек laugh.gif - надо потренироваться.
Подняться вверх 
 
Сообщение #108
zubr
Вставить ник
сообщение 22:07:2005, 16:58
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Guest_Юрий_*
Цитата
Из FAQ для Inno Setup:
Вопрос: Что именно происходит, если пользователь нажмет Cancel в процессе установки?
Ответ: При нажатии Cancel инсталятор отменяет изменения, сделанные им в ходе установки, почти как деинсталятор при удалении программы. Поэтому частично установленное приложение не останется в системе пользователя.

В этом-то мой вопрос и состоит, как избежать того, о чём говорится в ответе FAQ...

Удалите в своем коде секцию
[InstallDelete]
Name: {app}\a.exe; Type: files; Components:
Name: {app}\b.exe; Type: files; Components:
Name: {app}\c.exe; Type: files; Components:
Name: {app}\d.exe; Type: files; Components:

и все заработает как вы хотите.
Kindly
Цитата
В смысле? Так группа с ярлыками и создается, а после установки ярлыки могут быть в разнобой  , например: "Удалить" может быть в середине программной группы (особенно если ярлыков много). Хотелось бы знать, имеется ли возможность назначения последовательности размещения ярлыков в программной группе с ярлыками.

Ярлыки сортируются по алфавиту.
Цитата
Можно ли как-нибудь отключить страницу Приветствия?

В InnoSetup напрямую способа я не нашел, но обмануть можно все что угодно... или почти все smile.gif
Вот код:
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
 SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0);
 SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0);
end;
end;
Подняться вверх 
 
Сообщение #109
Гость_Kindly_*
сообщение 25:07:2005, 06:43
Цитата Ответить 





Инопланетный гость






    


Интересно-то как biggrin.gif ! Thanks!
У меня вот на днях поинтересовались, но пока не особо силен в Inno, но самому тоже интересно. Вопросы следующего содержания:
Как сделать еще один progress-bar? То есть чтобы во время установки отображался не только общий прогресс, но и прогресс для каждого файла в отдельности. А в идеале - еще и отдельный прогресс для backup'a, если он был выбран?
Подняться вверх 
 
Сообщение #110
Гость_Guest_Юрий_*_*
сообщение 26:07:2005, 10:34
Цитата Ответить 





Инопланетный гость






    


Появился такой вопрос:
На примере для Microsoft Office постараюсь пояснить его. После установки Office на компьютер в диалоге "Установка/Удаление программ" появляется запись об этом. После установки обновления добавляется дочерняя запись "Обновление".
Формулировка вопроса: как сделать так, чтобы после обновления появлялась дочерняя запись об обновлении, а старая никуда бы не исчезала и становилась родительской?
Подняться вверх 
 
Сообщение #111
zubr
Вставить ник
сообщение 26:07:2005, 19:56
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Kindly
Цитата
Как сделать еще один progress-bar? То есть чтобы во время установки отображался не только общий прогресс, но и прогресс для каждого файла в отдельности. А в идеале - еще и отдельный прогресс для backup'a, если он был выбран?

Сделать еще один progress-bar не проблема, можно юзать функцию CreateOutputProgressPage, но чтобы этот progress-bar правильно работал надо иметь программный контроль над процессом копирования файлов, InnoSetup такую возможность не дает, тут надо использовать более профессиональные инсталляторы.
Guest_Юрий_*
Цитата
На примере для Microsoft Office постараюсь пояснить его. После установки Office на компьютер в диалоге "Установка/Удаление программ" появляется запись об этом. После установки обновления добавляется дочерняя запись "Обновление".
Формулировка вопроса: как сделать так, чтобы после обновления появлялась дочерняя запись об обновлении, а старая никуда бы не исчезала и становилась родительской?

Чтобы в диалоге "Установка/Удаление программ" появилась запись, достаточно в реестре создать ключ : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NameOurProgram, в котором надо создать 2 обязательных параметра: DisplayName значение которого отображается в диалоге, UninstallString в значении которого должен быть путь к программе удаления.
Подняться вверх 
 
Сообщение #112
Гость_Guest_Юрий_*_*
сообщение 27:07:2005, 04:47
Цитата Ответить 





Инопланетный гость






    


To Zubr:
Цитата
Чтобы в диалоге "Установка/Удаление программ" появилась запись, достаточно в реестре создать ключ : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\NameOurProgram, в котором надо создать 2 обязательных параметра: DisplayName значение которого отображается в диалоге, UninstallString в значении которого должен быть путь к программе удаления.


То, что Вы сказали, не вызывает никакого сомнения. Это действительно так. Но я спрашиваю о том, как сделать дочернюю запись, чтобы одновременно была запись об оригинале, а информация об обновлении была записана как дерево под оригиналом.
Подняться вверх 
 
Сообщение #113
zubr
Вставить ник
сообщение 28:07:2005, 04:11
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Guest_Юрий_*
Цитата
Но я спрашиваю о том, как сделать дочернюю запись, чтобы одновременно была запись об оригинале, а информация об обновлении была записана как дерево под оригиналом.

Так в чем проблема, посмотрите в реестре, как это реализовано для офиса (у меня офис стоит без обновлений) и реализуйте в своем инсталляторе для своей программы.
Подняться вверх 
 
Сообщение #114
Гость_Guest_*
сообщение 28:07:2005, 10:21
Цитата Ответить 





Инопланетный гость






    


To Zubr:
Цитата
Так в чем проблема, посмотрите в реестре, как это реализовано для офиса (у меня офис стоит без обновлений) и реализуйте в своем инсталляторе для своей программы.

В реестре всё прописано стандартно. Есть какая-то хитрость, и её реализация не на поверхности, как могло показаться на первый взгляд. Так что вопрос отстаётся открытым, к сожалению...
Подняться вверх 
 
Сообщение #115
Гость_Kindly_*
сообщение 31:07:2005, 07:08
Цитата Ответить 





Инопланетный гость






    


Что Вы можете сказать насчет этого (450 kb):
]]>http://offwn8mw.310.ru/combat/files/russif...e1_0_to_1_2.exe]]>
Это обновление русификатора для игры, но не он нужен, а чтобы посмотреть как инсталлятор Inno Setup забомбили - я не узнал вначале. Inno Setup Form Disainer и рядом не валялся. Авторы инсталлятора молчат. Знает кто-нибудь как так возможно?
Подняться вверх 
 
Сообщение #116
zubr
Вставить ник
сообщение 31:07:2005, 11:00
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Так а что здесь невозможного? Меняете в окне Image, ложите 2 TNewProgressBar, причем здесь движение ProgressBar явно не связано с процессом копирования файлов - чистая иммитация, меняете шрифты в Label и т. п.
Подняться вверх 
 
Сообщение #117
Гость_Kindly_*
сообщение 2:08:2005, 12:31
Цитата Ответить 





Инопланетный гость






    


Цитата
Так а что здесь невозможного? Меняете в окне Image, ложите 2 TNewProgressBar, причем здесь движение ProgressBar явно не связано с процессом копирования файлов - чистая иммитация, меняете шрифты в Label и т. п.

Надо подумать unsure.gif .
Вопрос: возможно ли сделать резервирование или переименование уже существующих файлов, т.е. например, устанавливается 100 обновленных файлов, по умолчанию старые файлы переписываются новыми, так вот возможно ли вместо перезаписи существующих файлов сделать их резервирование или переименование, причем без указания каждого файла в отдельности?
Подняться вверх 
 
Сообщение #118
zubr
Вставить ник
сообщение 2:08:2005, 17:56
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 937
Регистрация: 19:11:2003
Пользователь №: 133



Репутация:   16  


Цитата
Вопрос: возможно ли сделать резервирование или переименование уже существующих файлов, т.е. например, устанавливается 100 обновленных файлов, по умолчанию старые файлы переписываются новыми, так вот возможно ли вместо перезаписи существующих файлов сделать их резервирование или переименование, причем без указания каждого файла в отдельности?

Резервирование или переименование сделать можно, это уже обсуждалось в этой теме ]]>здесь]]>. А вот без указания каждого файла в отдельности пожалуй в InnoSetup не пол