PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 6]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 [70] 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Cipso
29-10-2013, 02:03
Привет!
Есть код

[_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 Заранее благодарю.
З.Ы. Если можно то желательно можно было выбирать в меню и устанавливалось в конце установки перед нажатием кнопки завершить. Очень нужно, помогите пожалуйста!!!

Cipso
29-10-2013, 11:31
скрипт на установку 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, Так этот код мне не даёт что именно мне надо.

В независимости выберишь ты эти дополнение установки они всё равно устанавливаются автоматом.

А мне надо как у репакеров это делается. Кто знает подскажите :(

Nordek
29-10-2013, 19:20
Так этот код мне не даёт что именно мне надо. » Антон_Мураткин@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++

Cipso
30-10-2013, 12:24
Как сделать Помогите решить

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;

Cipso
30-10-2013, 19:59
Код: »Огромное спасибо! Очень выручили.
Вопрос, получается полный код будет таким
[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)

Mat_y
01-11-2013, 13:39
Есть вопрос:

В теме уже научился создавать описание и картинку при наведении мышки на компонент... а можно ли воспроизводить звуки при наведении на некоторые компоненты?

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

Shkutu
01-11-2013, 20:03
Всем доброго времени суток!
Подскажите плиз, а можно на форме типа TInputQueryWizardPage добавленное текстовое поле сделать недоступным для редактирования? Или для этого свою форму рисовать придется?

nik1967
01-11-2013, 21:06
Shkutu, ну у TInputQueryWizardPage есть свойство Edits[Index: Integer]: TPasswordEdit, у которого, в свою очередь, есть свойство ReadOnly: Boolean - только чтение. Вроде так.

ATTACUE
02-11-2013, 22:02
Доброго времени суток.
Взял код авторана на 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;

Кто что посоветует?

ATTACUE
02-11-2013, 22:56
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 и в нем пишется все, что душе угодно, в процессе установки высвечивается.

Иных способов в голову не приходит. Надеюсь помог)

nik1967
03-11-2013, 03:37
или хотя бы как изменить текст, который отображается при выборе языка установки:
Выберите язык, который будет использован в процессе установки »[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 . Писал ранее , мне ответили , но у меня не получилось . В чем проблема- не получается прописать выборочную установку . Надо чтобы напротив установки ПО по умолчанию ставилась галка,т.е. была выборочная установка и полная.

ATTACUE
04-11-2013, 16:12
Доброго времени суток.
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