Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]
Привет!
Есть код
[_Cоde]
var
CustomPage1: TWizardPage;
Edit1: TNewEdit;
Button1: TNewButton;
procedure Button1Click(Sender: TObject); forward;
procedure InitializeWizard();
begin
CustomPage1 := CreateCustomPage(wpSelectDir, 'Caption', 'Description');
Edit1 := TNewEdit.Create(WizardForm);
with Edit1 do
begin
Parent := CustomPage1.Surface;
Left := ScaleX(0);
Top := ScaleY(68);
Width := ScaleX(332);
Height := ScaleY(21);
end;
Button1 := TNewButton.Create(WizardForm);
with Button1 do
begin
Parent := CustomPage1.Surface;
Left := ScaleX(342);
Top := ScaleY(67);
Width := ScaleX(75);
Height := ScaleY(23);
Caption := 'Button';
OnClick := @Button1Click;
end;
end;
procedure Button1Click(Sender: TObject);
begin
end;
Как сделать чтоб при нажатии кнопки Button, можно было выбрать папку а в TNewEdit выводился путь выбранной папки?
В выходе то что на странице CustomPage1 нужно чтоб все было тоже самое как на странице SelectDirPage, т.е через Button выбиралась папка, в TNewEdit выводился путь, только выбиралось это для записи в реестр, т.е при установке записывалось значение в реестр выбранной папки
Root: HKCU; SubKey: Software\Mini-Game\Game\Share paths; ValueType: string; ValueName: ShareFolder; ValueData: """{app}\Mini-Game\Game\"","; Flags: uninsdeletevalue uninsdeletekeyifempty
Антон_Мураткин@vk
29-10-2013, 07:31
Всем доброе утро! Подскажите пожалуйста скрипт на установку dxwebsetup и vcredist_x86 Заранее благодарю.
З.Ы. Если можно то желательно можно было выбирать в меню и устанавливалось в конце установки перед нажатием кнопки завершить. Очень нужно, помогите пожалуйста!!!
скрипт на установку dxwebsetup и vcredist_x86 »
Взято из примера
[Tasks]
Name: Redist; Description: Дополнительное программное обеспечение:
Name: Redist\DirectXCheck; Description: Обновить DirectX; Flags: unchecked
Name: Redist\VCCheck; Description: Установить Microsoft Visual C++ Redist; Flags: unchecked
[Run]
Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ Redist...; Flags: skipifdoesntexist; Tasks: Redist\VCCheck
Filename: {src}\Redist\vcredist_x64.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ Redist...; Flags: skipifdoesntexist; Tasks: Redist\VCCheck
Filename: {src}\Redist\DirectX.exe; Parameters: /silent; StatusMsg: Обновляем DirectX...; Flags: skipifdoesntexist; Tasks: Redist\DirectXCheck
Mafia_forever
29-10-2013, 18:15
Всем Привет . Я хочу обратиться вам за маленькой помощью , у меня есть файл compiledcode.bin , мне сказали что я могу извлечь этот код с помощью BinDump или же ISOFORCE , я не смог найти данные файлы (утилиты) нигде , решил обратиться сюда , может кто нибудь знает как найти эти так сказать утилиты , если да то дать прямую ссылку на скачивание. Заранее спасибо за внимание :-)
Антон_Мураткин@vk
29-10-2013, 18:18
Cipso, Так этот код мне не даёт что именно мне надо.
В независимости выберишь ты эти дополнение установки они всё равно устанавливаются автоматом.
А мне надо как у репакеров это делается. Кто знает подскажите :(
Так этот код мне не даёт что именно мне надо. » Антон_Мураткин@vk, Чем ответ от Cipso не угодил?
Так используй IStool, Inno Script Studio, InnoIDE, они умеют это делать.
Вот через IStool накидал
[Tasks]
Name: a; Description: Дополнительно
Name: a/dx; Description: DirectX
Name: a/vc; Description: Visual C++
[Run]
Filename: {src}\vcredist.exe; Parameters: /q; StatusMsg: Установка Visual C++; Tasks: a/vc
Filename: {src}\DirectX.exe; Parameters: /silent; StatusMsg: Установка DirectX; Tasks: a/dx
Могу ещё десяток таких набить.
всё равно устанавливаются автоматом. »А ты действительно уверен в том что установка происходит?
Заметь, там присутствует флаг skipifdoesntexist
Flags: skipifdoesntexist;
который в случае отсутствия файла, пропускает его выполнение т.е в таком случае не выводит предупреждение о том что файл не существует.
[hr]{src} - Внешний путь.
Если у тебя например так
[Run]
Filename: {src}\vcredist.exe
Filename: {src}\DirectX.exe
то это означает что твои DirectX и Visual C++ должны находиться рядом с инсталлятором.
если например так
[Run]
Filename: {src}\Моя_Папка\vcredist.exe
Filename: {src}\Моя_Папка\DirectX.exe
то это означает что рядом с инсталлятором должна быть создана папка с названием "Моя_Папка" а в ней твои DirectX и Visual C++.
[hr]
[Tasks] - Это задача
В задачах обрати внимание на Name
в Name должно быть буквенное или буквенно-числовое обозначение
[Tasks]
Name: a/ab
Name: a/ac
т.е если нужно чтоб происходило выполнение в зависимости от выбранной задачи, то в [Run] в Filename должен присутствовать Tasks: с буквенным или буквенно-числовым обозначением в зависимости от того что прописанного в [Tasks]
[Run]
Filename: {src}\vcredist.exe; Tasks: a/ab
Filename: {src}\DirectX.exe; Tasks: a/ac
Description - Это описание/название компонента
[Tasks]
Name: a/ab; Description: Это мой DirectX
Name: a/ac; Description: Это мой Visual C++
Как сделать Помогите решить
El Sanchez
30-10-2013, 18:28
Как сделать чтоб при нажатии кнопки Button, можно было выбрать папку а в TNewEdit выводился путь выбранной папки? »
Cipso,
procedure BrowseButton(Sender: TObject);
var
szDir: String;
begin
if BrowseForFolder('', szDir, True) then Edit1.Text := szDir;
end;
через Button выбиралась папка, в TNewEdit выводился путь, только выбиралось это для записи в реестр, т.е при установке записывалось значение в реестр выбранной папки »
Cipso,
[Registry]
Root: HKCU; SubKey: Software\Mini-Game\Game\Share paths; ValueType: string; ValueName: ShareFolder; ValueData: {code:SetValueData|}; Flags: uninsdeletevalue uninsdeletekeyifempty
[Code]
function SetValueData(Param: String): String;
begin
Result := Format('"%s\,"', [Edit1.Text]);
end;
Код: »Огромное спасибо! Очень выручили.
Вопрос, получается полный код будет таким
[Registry]
Root: HKCU; SubKey: Software\Mini-Game\Game\Share paths; ValueType: string; ValueName: ShareFolder; ValueData: {code:SetValueData|}; Flags: uninsdeletevalue uninsdeletekeyifempty
[_Code]
var
CustomPage1: TWizardPage;
Edit1: TNewEdit;
Button1: TNewButton;
szDir: String;
procedure BrowseButton(Sender: TObject); forward;
procedure InitializeWizard();
begin
CustomPage1 := CreateCustomPage(wpSelectDir, 'Caption', 'Description');
Edit1 := TNewEdit.Create(WizardForm);
with Edit1 do
begin
Parent := CustomPage1.Surface;
Left := ScaleX(0);
Top := ScaleY(68);
Width := ScaleX(332);
Height := ScaleY(21);
end;
Button1 := TNewButton.Create(WizardForm);
with Button1 do
begin
Parent := CustomPage1.Surface;
Left := ScaleX(342);
Top := ScaleY(67);
Width := ScaleX(75);
Height := ScaleY(23);
Caption := 'Button';
OnClick := @BrowseButton;
end;
end;
procedure BrowseButton(Sender: TObject);
begin
if BrowseForFolder('', szDir, True) then Edit1.Text := szDir;
end;
function SetValueData(Param: String): String;
begin
Result := Format('"%s\,"', [Edit1.Text]);
end;
???
Все верно я вставил?
tuz-veta
30-10-2013, 22:53
ребята подскажите как добавить кнопки вот здесь
http://4put.ru/pictures/small/765/2350180.jpg (http://4put.ru/view-max-picture.php?id=2350180)
Есть вопрос:
В теме уже научился создавать описание и картинку при наведении мышки на компонент... а можно ли воспроизводить звуки при наведении на некоторые компоненты?
alexxxdar@vk
01-11-2013, 15:06
Уважаемые форумчане! Очень нужна ваша помощь...
Я разработчик Mod Pack Alexxx-DAR для игры World Of Tanks!
У меня есть несколько вопросов... Помогите кто знает!
01. Как сделать так, чтобы мой установщик автоматически находил местоположение игры, тоесть сам прописывал путь к папке World Of Tanks ???
02. Как сделать так, чтобы установщик копировал папку audio из папки World Of Tanks/res в папку World Of Tanks/res_mods/0.8.9 ???
03. Как сделать так, чтобы в окне выбора модов, при наведение на какой либо мод, высвечивалось описание мода и маленький скриншот ???
04. Как сделать так чтобы установщик автоматически очищал папку res_mods ???
05. Как сделать так, чтобы при запуске установщика открывалось окно с описанием мод-пака (По умолчанию у меня открывается "Вас приветствует мастер установки", Далее открывается "Выберите папку с игрой") Как между ними вставить окно с описанием модов ???
Подобные установщики есть у таких мододелов как Jove: http://www.youtube.com/watch?v=5RfUHG5Ptxc
и ExPromt: http://www.youtube.com/watch?v=ikVnr8r6ELs#t=147
Мой же установщик, который мне нужно доработать можно скачать и посмотреть отсюда: http://yadi.sk/d/aJ4UyBdRBsauc
Всем доброго времени суток!
Подскажите плиз, а можно на форме типа TInputQueryWizardPage добавленное текстовое поле сделать недоступным для редактирования? Или для этого свою форму рисовать придется?
Shkutu, ну у TInputQueryWizardPage есть свойство Edits[Index: Integer]: TPasswordEdit, у которого, в свою очередь, есть свойство ReadOnly: Boolean - только чтение. Вроде так.
Доброго времени суток.
Взял код авторана на Inno Setup отсюда (http://forum.oszone.net/post-1707574.html)
сообщение от Gnom_aka_Lexander, сцитировать не могу, так как тема закрыта
Добавил секцию [CustomMessages] на два языка - rus и eng.
Секция [Languages] соответственно тоже имеется.
В секции подписи имен файлов (Caption) через cm:MyButtomName тоже сделал.
Проблема в следующем:
Хочу добавить две кнопки - rus и eng, чтобы по их нажатию интерфейс переключался на русский и английский соответственно.
То есть реализация ShowLanguageDialog=yes, только через кнопки
или хотя бы как изменить текст, который отображается при выборе языка установки:
Выберите язык, который будет использован в процессе установки
На просто - выберите язык, так как по крайней мере реализация через ShowLanguageDialog работает, но выглядит не совсем так, как хотелось.
[CODE]
procedure EngButtonClick(Sender: TObject);
begin
// голову сломал, не знаю как реализовать
end;
Кто что посоветует?
alexxxdar@vk,
1) через реестр
[Setup]
DefaultDirName={reg:HKLM\SOFTWARE\Название_Игры,InstallPath}
Только заранее свои ключи к игре проверить
2) Как-то так (если я правильно понял)
[Files]
Source: "Audio\Звуковой_файл_1.wav"; DestDir: "{app}\Папка_Куда_Копируем\"; DestName: "Новое_имя_1.wav";
Можно DestName (переименование) не использовать
3) не знаю
4) в секции [Code] нужно как-то применить следующее, как именно не знаю, но копать отсюда:
RemoveDir(ExpandConstant('{app}\Название_удаляемой_папки'));
5) Можно само описание добавить как-то так:
[Setup]
InfoBeforeFile=info.txt
Рядом со скриптом создается info.txt и в нем пишется все, что душе угодно, в процессе установки высвечивается.
Иных способов в голову не приходит. Надеюсь помог)
или хотя бы как изменить текст, который отображается при выборе языка установки:
Выберите язык, который будет использован в процессе установки »[setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
ShowLanguageDialog=yes
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: eng; MessagesFile: compiler:Default.isl
[Messages]
; Русский
rus.SelectLanguageTitle=Выберите язык
rus.SelectLanguageLabel=Выберите язык:
; English
eng.SelectLanguageTitle=Select language
eng.SelectLanguageLabel=Select language:Хочу добавить две кнопки - rus и eng, чтобы по их нажатию интерфейс переключался на русский и английский соответственно. »[setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}
ShowLanguageDialog=auto
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: eng; MessagesFile: compiler:Default.isl
[CustomMessages]
; Русский
rusButtonBack=< &Назад
rusButtonNext=&Далее >
rusButtonCancel=Отмена
rusSetupWindowTitle=Установка — %1
rusWelcomeLabel1=Вас приветствует Мастер установки %1
rusWelcomeLabel2=Программа установит %1, версия %2 на Ваш компьютер.%n%nРекомендуется закрыть все прочие приложения перед тем, как продолжить.%n%nНажмите «Далее», чтобы продолжить, или «Отмена», чтобы выйти из программы установки.
; English
engButtonBack=< &Back
engButtonNext=&Next >
engButtonCancel=Cancel
engSetupWindowTitle=Setup — %1
engWelcomeLabel1=Welcome to the %1 Setup Wizard
engWelcomeLabel2=This will install %1 version %2 on your computer.%n%nIt is recommended that you close all other applications before continuing.%n%nClick Next to continue, or Cancel to exit Setup.
[ Code]
var
lang: String;
langBtn: TButton;
procedure ChangeLang();
begin
WizardForm.BackButton.Caption:= CustomMessage(lang+'ButtonBack');
WizardForm.NextButton.Caption:= CustomMessage(lang+'ButtonNext');
WizardForm.CancelButton.Caption:= CustomMessage(lang+'ButtonCancel');
WizardForm.Caption:= FmtMessage(CustomMessage(lang+'SetupWindowTitle'), ['{#SetupSetting('AppName')}']);
WizardForm.WelcomeLabel1.Caption:= FmtMessage(CustomMessage(lang+'WelcomeLabel1'), ['{#SetupSetting('AppName')}']);
WizardForm.WelcomeLabel2.Caption:= FmtMessage(CustomMessage(lang+'WelcomeLabel2'), ['{#SetupSetting('AppName')}', '{#SetupSetting('AppVersion')}']);
end;
procedure LangBtnClick(Sender: TObject);
begin
if lang='rus' then begin
lang:= 'eng';
langBtn.Caption:= 'рус';
end else begin
lang:= 'rus';
langBtn.Caption:= 'eng';
end;
ChangeLang();
end;
procedure InitializeWizard;
begin
langBtn:= TButton.Create(WizardForm);
with langBtn do begin
SetBounds(10,WizardForm.CancelButton.Top,30,WizardForm.CancelButton.Height)
OnClick:= @LangBtnClick;
Parent:= WizardForm;
end;
if ActiveLanguage='rus' then begin
lang:= 'rus';
langBtn.Caption:= 'eng';
end else begin
lang:= 'eng';
langBtn.Caption:= 'рус';
end;
end;
ToBeLife
03-11-2013, 18:29
Доброго времени. Подскажите, как можно реализовать отображение (не выбор) компонентов в зависимости от выбранного языка т.е. если выбираю английский то у меня три определённых компонента из которых могу выбрать, если другой язык, то отображаются другие компоненты.
Dinvin4ester
04-11-2013, 00:49
Ребята есть скрипт - http://sendfile.su/886094 . Писал ранее , мне ответили , но у меня не получилось . В чем проблема- не получается прописать выборочную установку . Надо чтобы напротив установки ПО по умолчанию ставилась галка,т.е. была выборочная установка и полная.
Доброго времени суток.
nik1967, спасибо за помощь
Возникла весьма специфичная проблема.
Часто для установки дополнительных фишек в папку с программой делал так.
[Setup]
DefaultDirName={reg:HKLM\SOFTWARE\Название_приложения,InstallPath}
То есть через реестр инсталлятор определял - куда поставить.
И вроде бы все хорошо, и очень даже удобно, если бы не одно НО:
Когда я стал использовать данный путь, но для установки дополнительного ПО, чтобы в случае чего доп. ПО
было удалить, а основную программу оставить нетронутой, то есть:
[Setup]
DefaultDirName={reg:HKLM\SOFTWARE\Название_приложения,InstallPath}\папка_1\внутренняя папка
то после установки приложения, значение в реестре основной программы
{reg:HKLM\SOFTWARE\Название_приложения,InstallPath}
меняется на {reg:HKLM\SOFTWARE\Название_приложения\папка_1\внутренняя папка,InstallPath}
и это моем случае очень здорово напрягает.
Не помогает и запись такого вида:
[Setup]
DefaultDirName={reg:HKLM\SOFTWARE\Название_приложения,InstallPath|{pf}\папка_1\внутренняя папка}
или
[Setup]
DefaultDirName={reg:HKLM\SOFTWARE\Название_приложения,InstallPath|папка_1\внутренняя папка}
Секция [registry] имеется, выставлены отличные от основной программы значения типа:
Root: HKLM; Subkey: "Другое_название_приложения"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"; Flags: uninsdeletekey
Тем не менее - в {reg:HKLM\SOFTWARE\Название_приложения,InstallPath} значения все равно меняются.
Как мне заблокировать изменение инсталлятором именно этой ветки:
{reg:HKLM\SOFTWARE\Название_приложения,InstallPath}
чтобы она для инсталлятора была как бы "только для чтения"
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.