Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: skryabinsoft
Дата сообщения: 18.11.2008 17:19
Ребята, ответьте пожалуйста на мой вопрос на 66 странице
Автор: Diawer
Дата сообщения: 18.11.2008 17:25
Посмотрите, пожалуйста скриптик, его суть такая, при выборе первого компонента на следующей странице появляется языковое меню, а при выборе второго надпись. Проблема в том, выбираем первый компонент нажимаем "Далее" – появляется меню, затем возвращаемся назад и выбираем второй компонент, появляется надпись, но они накладываются друг на друга, как сделать, что бы появлялось или - или, т.е. убирались.
[more][Setup]
AppName=My program
AppVerName=My program
DefaultDirName={pf}\My program
DefaultGroupName=My program
OutputDir=C:\Documents and Settings\Нейман\Рабочий стол

[CustomMessages]
english.ComponentsName=Choose program:
russian.ComponentsName=Выберите программу:
Snes9xIconName1=Program 1
ZsnesIconName2=Program 2
english.LangMenuName=Select Program Language:
russian.LangMenuName=Выберите язык программы:
english.LangMenuText=Only English version
russian.LangMenuText=Только английская версия

[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Components]
Name: Main; Description: {cm:ComponentsName}; Types: full; Flags: fixed exclusive
Name: Main\Snes9x; Description: {cm:Snes9xIconName1}; Flags: exclusive
Name: Main\Zsnes; Description: {cm:ZsnesIconName2}; Flags: exclusive

[Code]
var
LangEdit: TComboBox;

function english: Boolean;
begin
Result:=LangEdit.ItemIndex = 0;
end;

function russian: Boolean;
begin
Result:=LangEdit.ItemIndex = 1;
end;

procedure CurPageChanged(CurPageID: Integer);
var
MsgStr: TNewStaticText;
StaticText: TNewStaticText;
begin
with WizardForm do
begin
if CurPageID = wpSelectDir then
SelectDirPage.Notebook.ActivePage:= SelectComponentsPage;
if CurPageID = wpSelectComponents then
SelectComponentsPage.Notebook.ActivePage:= SelectDirPage;
DiskSpaceLabel.Caption:= ComponentsDiskSpaceLabel.Caption;
end;
if (CurPageID = wpSelectComponents) and IsComponentSelected('Main\Snes9x') then
begin
MsgStr := TNewStaticText.Create(WizardForm);
MsgStr.Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(8);
MsgStr.Left := WizardForm.DirEdit.Left;
MsgStr.Width := WizardForm.DirEdit.Width;
MsgStr.AutoSize := False;
MsgStr.Caption := ExpandConstant ('{cm:LangMenuName}');
MsgStr.Parent := WizardForm.SelectDirPage;

LangEdit:=TComboBox.Create(WizardForm);
LangEdit.Style:=csDropDownList;
LangEdit.Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(32);
LangEdit.Left := WizardForm.DirEdit.Left;
LangEdit.Width := ScaleX(150);
LangEdit.Parent:=WizardForm.SelectDirPage;
LangEdit.Items.add('English');
LangEdit.Items.add('Русский');
case ActiveLanguage of
'english': LangEdit.ItemIndex:=0;
'russian': LangEdit.ItemIndex:=1;
end; end;
if (CurPageID = wpSelectComponents) and IsComponentSelected('Main\Zsnes') then
begin
StaticText := TNewStaticText.Create(WizardForm);
StaticText.Top := WizardForm.GroupEdit.Top + WizardForm.GroupEdit.Height + ScaleY(8);
StaticText.Left := ScaleX(0);
StaticText.Caption := ExpandConstant ('{cm:LangMenuText}');
StaticText.AutoSize := True;
StaticText.Font.Color:= clBlue;
StaticText.Parent := WizardForm.SelectDirPage;
end;
end;[/more]
Автор: skryabinsoft
Дата сообщения: 18.11.2008 17:26
Мне ответьте пожадуйста на вопрос, 66 страница, в самом низу.
Автор: Tinca
Дата сообщения: 18.11.2008 18:54
skryabinsoft

Нет, нельзя. Это же инсталлятор, а не патчер.
Автор: TaucoH
Дата сообщения: 18.11.2008 19:37
Всем привет!

Вот решил я протестить программку, тем самым облегчить себе не много жизнь..
Но столкнулся с проблемой. Ну естественно, куда же без них =)

В общем у меня была цель создать некий инсталятор программ под винду. К примеру запускаю файл exe там выбираю нужные мне программы и они сразу устанавлюваются на комп в нужные папки. Скажем я хочу установить QIP, Skype и Firefox. А в инсталяторе у меня кроме этих 3-х прог лежит ещё скажем парочка. Ну в общем нужен выбор прогрмм для полной их установки.

Всё к чему я смог придти - это что все программы, которые я записал в коде, сначала скачиваются на комп, в папку которую я укажу, и только потом по очереди идёт установка нужных мне 3-х программ, но скачались-то все 5!!
Отсюда и вопрос... Скажите мне пожалуйся, как бы так сделать чтобы всё у меня работало?

Честно говоря некогда особо разбираться с программой, методом тыка дошёл только до такого варианта. Просто Вы тут уже многие завстегдатые, а этот код был бы для Вас сущим пустяком.. Помогите пожалуйста нубу в этой программе...

Спасибо.
Автор: boss911
Дата сообщения: 18.11.2008 22:44
Victor_Dobrov

Цитата:
ты уже долго здесь тусуешься, но такое впечатление, что справку по Inno никогда не открывал.

Та да, долго, но справку я открывал и подобного там не нашел, ничего по секции INI в этом плане, а в раздел Паскаля я даже не заглядываю, не дружу с программированием, порой бывает, что не въеду для чего код. А может русский хелп уже устарел, а английский я не знаю. А если честно, то в таких случаях просто забываешь про хелп, так не думаешь, что на твой специфический вопрос, может быть там ответ.

Спасибо помог.



ALL

Я вот тут вопрос задавал, который еще актуален для меня.
Автор: Victor_Dobrov
Дата сообщения: 18.11.2008 23:50
TaucoH
Цитата:
нужен выбор прогрмм для полной их установки.

Вот [more=пример]
[Setup]
AppName=InstallProgs
AppVerName=InstallProgs
Uninstallable=false
CreateAppDir=false

[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl

[Files]
Source: MyProgs\Prog1.exe; DestDir: {tmp}; Tasks: Prog1
Source: MyProgs\Prog2.exe; DestDir: {tmp}; Tasks: Prog2
Source: MyProgs\Prog3.exe; DestDir: {tmp}; Tasks: Prog3

[Tasks]
Name: Prog1; Description: Install Program 1
Name: Prog2; Description: Install Program 2
Name: Prog3; Description: Install Program 3

[Run]
Filename: {tmp}\Prog1.exe; Parameters: /SILENT; Flags: hidewizard; Tasks: Prog1
Filename: {tmp}\Prog2.exe; Parameters: /SILENT; Flags: hidewizard; Tasks: Prog2
Filename: {tmp}\Prog3.exe; Parameters: /SILENT; Flags: hidewizard; Tasks: Prog3[/more] - инсталлятор содержит несколько инсталляторов и запускает установку выбранных на странице задач.
Деинсталировать каждую прогу придётся отдельно.

boss911
Цитата:
справку я открывал и подобного там не нашел, ничего по секции INI в этом плане, а в раздел Паскаля я даже не заглядываю

Раздел Константы - один из первых (и часто используемых) в справке. Оттуда взят мой пример, как получить значение из реестра.
Автор: Diman19
Дата сообщения: 19.11.2008 00:14
Народ ответьте пожалуйста на странице 77.Неужели никто не знает?
Автор: braunberg
Дата сообщения: 19.11.2008 01:05
Diman19
Посмотри в этом посте http://forum.ru-board.com/topic.cgi?forum=5&topic=27438&start=600#11 (id=89)

Автор: Skolozhabskiy
Дата сообщения: 19.11.2008 03:51
После инсталляции приложения создаются различные, в том числе и временные, файлы.
Как вывести в начале или конце деинсталяции диалог для пользователя, спрашивающий - удалять, созданные им файлы или сохранить? Только не диалог в виде MsgBox, а окно Inno Setup (мастера деинсталляции) с опциями выбора. И желательно визуально видеть процесс удаления на прогресс баре с комментарием - "Созданные пользователем файлы вместе с директориями удаляются". Буду очень признателен за конкретный пример. Спасибо.
Автор: ChVL
Дата сообщения: 19.11.2008 08:09
cdman67
Неправильно.
{userdocs} - сразу попадаем в папку Мои документы.

Поскольку нет константы для пути:
\Documents and Settings\User\Local Settings\Application Data\
то можно ли её организовать с помощью секции [Code]?
Автор: noiseless
Дата сообщения: 19.11.2008 10:46
ChVL
а так
DefaultDirName={%USERPROFILE}\Local Settings\Application Data
Автор: ExpeditorR
Дата сообщения: 19.11.2008 12:13
ChVL

Цитата:
Поскольку нет константы для пути:
\Documents and Settings\User\Local Settings\Application Data\
то можно ли её организовать с помощью секции [Code]?

Конечно можно [more][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName="{code:MyConst}"
DefaultGroupName=My Program

[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: compiler:examples\MyProg.exe; DestDir: "{app}"

[Code]
function MyConst(Default: String): String;
var
ResultStr: String;
begin
RegQueryStringValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 'Local Settings', ResultStr);
Result:=ResultStr+'\Application Data';
end;[/more]
Автор: noiseless
Дата сообщения: 19.11.2008 12:56
ExpeditorR
тогда уж напрямую можно
_[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName="{code:MyConst}"
DefaultGroupName=My Program

_[Languages]
Name: "rus"; MessagesFile: "compiler:Languages\Russian.isl"

_[Files]
Source: compiler:examples\MyProg.exe; DestDir: "{app}"

_[Code]
function MyConst(Default: String): String;
var
ResultStr: String;
begin
RegQueryStringValue(HKCU, 'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', 'Local AppData', ResultStr);
Result:=ResultStr;
end;
Автор: ExpeditorR
Дата сообщения: 19.11.2008 13:59
noiseless
Согласен
Автор: RMKusto
Дата сообщения: 19.11.2008 14:32
Помогите, пожалуйста с моим вопросом на 78 странице.
Автор: Andrulko
Дата сообщения: 19.11.2008 16:20
Ну пожалуйста, помогите мне с моим вопросом на стр. 78! Неправильно работает автоматическое восстановление оригинальных файлов при использовании unist000.exe. Восстанавливается лишь gta-vc.exe...

[more=Восстановление]

[Files]
Source: {app}\gta-vc.exe; DestDir:{app}\Uninstall_Ukr; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\models\fonts.txd; DestDir:{app}\Uninstall_Ukr\models; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\models\fronten1.txd; DestDir:{app}\Uninstall_Ukr\models; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\models\hud.txd; DestDir:{app}\Uninstall_Ukr\models; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\movies\gtatitles.srt; DestDir:{app}\Uninstall_Ukr\movies; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\txd\intro1.txd; DestDir:{app}\Uninstall_Ukr\txd; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\txd\intro2.txd; DestDir:{app}\Uninstall_Ukr\txd; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\txd\Intro3.txd; DestDir:{app}\Uninstall_Ukr\txd; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\txd\intro4.txd; DestDir:{app}\Uninstall_Ukr\txd; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\txd\Loadsc0.txd; DestDir:{app}\Uninstall_Ukr\txd; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\txd\Splash1.txd; DestDir:{app}\Uninstall_Ukr\txd; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: {app}\txd\Splash2.txd; DestDir:{app}\Uninstall_Ukr\txd; Components: "Backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall
Source: "F:\Games\Grand Theft Auto - Vice City\gta-vc.exe"; DestDir: "{app}"; Tasks: "v11"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\anim\gta-vc.exe"; DestDir: "{app}"; Tasks: "v10"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\GTA Vice City Trainer (v1.1).exe"; DestDir: "{app}"; Tasks: "v11"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\GTA Vice City Trainer (v1.0).exe"; DestDir: "{app}"; Tasks: "v10"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\models\fonts.txd"; DestDir: "{app}\models"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\models\fronten1.txd"; DestDir: "{app}\models"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\models\hud.txd"; DestDir: "{app}\models"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\movies\gtatitles.srt"; DestDir: "{app}\movies"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\Text\ukrainian.gxt"; DestDir: "{app}\Text"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\txd\intro1.txd"; DestDir: "{app}\txd"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\txd\intro2.txd"; DestDir: "{app}\txd"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\txd\Intro3.txd"; DestDir: "{app}\txd"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\txd\intro4.txd"; DestDir: "{app}\txd"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\txd\Loadsc0.txd"; DestDir: "{app}\txd"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\txd\Splash1.txd"; DestDir: "{app}\txd"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\txd\Splash2.txd"; DestDir: "{app}\txd"; Flags: ignoreversion
Source: "F:\Games\Grand Theft Auto - Vice City\Info.rtf"; DestName: Readme_UA.rtf; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usPostUninstall then
begin
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\gta-vc.exe'),ExpandConstant('{app}\gta-vc.exe'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\models\fonts.txd\'),ExpandConstant('{app}\models\fonts.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\models\fronten1.txd'),ExpandConstant('{app}\models\fronten1.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\models\hud.txd'),ExpandConstant('{app}\models\hud.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\movies\gtatitles.srt'),ExpandConstant('{app}\movies\gtatitles.srt'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\txd\intro1.txd'),ExpandConstant('{app}\txd\intro1.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\txd\intro2.txd'),ExpandConstant('{app}\txd\intro2.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\txd\Intro3.txd'),ExpandConstant('{app}\txd\Intro3.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\txd\intro4.txd'),ExpandConstant('{app}\txd\intro4.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\txd\Loadsc0.txd'),ExpandConstant('{app}\txd\Loadsc0.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\txd\Splash1.txd'),ExpandConstant('{app}\txd\Splash1.txd'),True)
FileCopy(ExpandConstant('{app}\Uninstall_Ukr\txd\Splash2.txd'),ExpandConstant('{app}\txd\Splash2.txd'),True)
DelTree(ExpandConstant('{app}\Uninstall_Ukr'),True,True,True)
end
end;

[Components]
Name: Backup; Description: Створити резервну копію оригінальних файлів; Types: Full

[/more]
Автор: Genri
Дата сообщения: 19.11.2008 17:55
ChVL

Цитата:
В справке не нашёл константу для следующего пути:
\Documents and Settings\User\Local Settings\Application Data\
-- {localappdata}
Автор: skeptik_vdm
Дата сообщения: 19.11.2008 18:29
Привет обитателям форума!
У меня такой вопрос как сделать так чтобы при повторном запуске инсталлятора он выдавал небольшое окошечко с запуском программы той или иной программы а путь брал из реестра???
Ответьте пожалуйста!!!
Автор: Serega0675
Дата сообщения: 19.11.2008 19:53
Большое спасибо serg_aka_lain!!!
Автор: Diman19
Дата сообщения: 20.11.2008 01:15
За скрипт спасибо!Кто подскажешь как можно эти иероглифы в нормальный текст преобразовать?
Автор: ChVL
Дата сообщения: 20.11.2008 07:45
noiseless
ExpeditorR
Genri
Спасибо! - Всё работает, в том числе и с использованием {%USERPROFILE}
{localappdata} - не задокументированная константа (по крайней мере в справке её нет). Я пытался изобразить её из названия пути, но этот синтаксис не придумал, всё крутился вокруг слова user.

Следующий вопрос.
Программа имеет один исполняемый файл MyProg.exe. Им запускается вся прога целиком. Кроме этого предусмотрен запуск отдельных компонентов с помощью ключей, к примеру, MyProg.exe -a. Соответственно в меню Пуск размещаются ярлыки на запуск всех этих вариантов. Как это прописать в скрипте? Иными словами, как прописать запуск из командной строки MyProg.exe -a?
Автор: Serega0675
Дата сообщения: 20.11.2008 16:33
ChVL

Цитата:
Программа имеет один исполняемый файл MyProg.exe. Им запускается вся прога целиком. Кроме этого предусмотрен запуск отдельных компонентов с помощью ключей, к примеру, MyProg.exe -a. Соответственно в меню Пуск размещаются ярлыки на запуск всех этих вариантов. Как это прописать в скрипте? Иными словами, как прописать запуск из командной строки MyProg.exe -a?

[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe; Parameters: -a; WorkingDir: {app}
Автор: Genri
Дата сообщения: 20.11.2008 18:38
ChVL

Цитата:
{localappdata} - не задокументированная константа (по крайней мере в справке её нет)
-- любопытно. А {group} и {sendto} в справке есть? А между ними что?
Автор: Kutsenko
Дата сообщения: 20.11.2008 20:13
Подскажите пожалуйста как можна на страницу приветствия ниже стандартного текста ещё свой добавить. Заранее огромное СПАСИБО.

Автор: DarkSeroy
Дата сообщения: 20.11.2008 20:17
Ребята подскажите как сделать компиляцыю больше 2 гиг?
Автор: Kutsenko
Дата сообщения: 20.11.2008 20:23
Упс, сори, толи браузер лагает, толи сайт, непонятное чтото.
Автор: ChVL
Дата сообщения: 20.11.2008 21:13
Serega0675
Спасибо! Всё работает.
Genri
Прошу прощения за невнимательность.
Автор: Genri
Дата сообщения: 21.11.2008 00:50
Andrulko

Цитата:
Неправильно работает автоматическое восстановление оригинальных файлов при использовании unist000.exe. Восстанавливается лишь gta-vc.exe...
-- во-первых, функция FileCopy копирует только в существующие директории (значит, перед копированием их надо создавать, используя CreateDir или ForceDirectories или любой другой способ); во-вторых, так как после восстановления бекапные файлы больше не нужны, возможно лучшим решением, будет использование вместо FileCopy функции RenameFile (не освобождает от предварительного создания директорий, но в некоторых случаях это гораздо быстрее)
Автор: 999Kay666
Дата сообщения: 21.11.2008 01:21
Всем привет.
Вопрос по innounp.
На форуме, один добрый человек, уже говорил как рописать в реестр сроку "Распоковать innounp". Так, чтобы она отображалась в контекстном меню при нажатии правой кнопкой мыши на экзешнике.
Теперь найти это сообщение не могу. Подскажите ПЛИЗ, КАК прописать в рееестрр.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Презентация


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.