Войти

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


Страниц : 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 126

MogilShik2007
27-02-2015, 12:13
Это описано в СПРАВКЕ, долбень. Мне хватает мозгов, что б написать инсталл в 1500 строк, а ты сиди на примерах с инета. По поводу DX смотри в справке и примерах с [Run] или для твоего начального уровня - напиши батник на запуск 2 екзешников типо такого »

Ну так хера здесь делаешь баклан, или в свой великой справке ответов не нашел?

jack_nuclear
27-02-2015, 12:23
Цитата MogilShik2007:
Ну так хера здесь делаешь баклан, или в свой великой справке ответов не нашел? »

А в справке есть реализация звука? Ты и за 10 лет не напишешь.

Я тебе пример дал, долбень, и методы реализации

Примеры:
Exec('шляпа.exe', 'параметры', 'C:\путь', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); //тебе нужен ewWaitUntilTerminated

функция:
function Exec(const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer): Boolean;

Я уверен, что ты вообще не понимаешь, что с этим делать =) Жди пока кто-то за тебя сделает)) 2007 в нике год рождения, я так понял? За слова "ума не хватает понять вопроса" отвечаешь или очередной диванный?

K.A.V.
27-02-2015, 12:39
Идите лесом тогда... »
Меня такие люди поражают своей безмозглостью. »
В первых темах люди были умней. Деградируете »
Ну так хера здесь делаешь баклан »
Я тебе пример дал, долбень. »

Напоминаю всем, что есть такая штука, как ОПК (http://forum.oszone.net/rules.html)
А более конкретно, пункт 3.1

Если кто-то что-то не понял, не знает, не умеет, неправильно понял другого человека - это не повод его оскорблять
Если вы находите такой стиль общения нормой, то данный форум не для вас
Если после данного замечания ваши сообщения будут оставаться на таком же уровне - вам помогут понять, что данный форум не для вас.
Уважайте друг друга и держите свои эмоции при себе

За слова "ума не хватает понять вопроса" отвечаешь или очередной диванный? »
Успокоитесь или вам помочь? Если есть претензии к участнику - решайте такие вопросы в личных сообщениях, прекращайте этот цирк

ps
вы*бнутся »
ь потеряли

MogilShik2007
27-02-2015, 12:47
DEL

jack_nuclear, - 2381

Nordek
27-02-2015, 15:37
нужно чтоб из папки Redist устанавливалась полная версия DirectX, а после запускался DirectXweb »
что по поводу первой части вопроса про реализацию DX? »

Простой пример:
[Setup]
AppName=Redist
AppVersion=1.0
DefaultDirName={pf}\Redist
OutputDir=.

[Tasks]
Name: ext; Description: Дополнительные компоненты
Name: ext\dx; Description: Установить/Обновить DirectX

[Run]
Filename: {src}\Redist\DirectX\DXSETUP.exe; Parameters: /silent; Tasks: ext\dx; Flags: skipifdoesntexist; StatusMsg: Установка DirectX 9
Filename: {src}\Redist\dxwebsetup.exe; Parameters: /Q; Tasks: ext\dx; Flags: skipifdoesntexist; StatusMsg: Установка DirectX 9 (Загрузка компонентов из сети интернет)

El Sanchez
27-02-2015, 15:53
Мне нужно записать в реестр несколько значений. Заранее количество значений не известно и будет вычисляться на этапе выполнения.
Для реализации задачи я применяю пользовательский макрос с директивой #for: »
Zabeal, в вашем случае использовать препроцессор не нужно:

[Code]
const
MapInfoPath = 'SOFTWARE\MapInfo\MapInfo\Professional';

/////////////////////////////////
function GetGlobalCount: Integer;
begin
{ тут вычисляется результат
Result := 100500; }
end;

//////////////////////////////////////////////
procedure CurStepChanged(CurStep: TSetupStep);
var
i: Integer;
begin
case CurStep of
ssPostInstall:
begin
for i := 1 to GetGlobalCount do
RegWriteStringValue(HKCU, Format('%s\FLD-%d', [MapInfoPath, i]), '', '');
end;
end;
end;


что по поводу первой части вопроса про реализацию DX? »
MogilShik2007, подобные вопросы про установку DirectX и VCRedist, гордо именуемых в инсталляторах "Установка дополнительного ПО", всплывают на форуме довольно-таки часто, только почему-то никто не проверяет, а нужно ли это ПО (http://blogs.msdn.com/b/chuckw/archive/2010/09/08/not-so-direct-setup.aspx) системе конечного пользователя.

Zabeal
27-02-2015, 20:18
Zabeal, в вашем случае использовать препроцессор не нужно: »

Спасибо за предложенное решение!
Я так и вынужден сделать, но всё-таки была надежда обойтись средствами самого установщика :)
Дело вот в чём: в реестр я конечно запишу значения, это отлично, но как быть при деинсталляции приложения?
Ведь тогда мне придётся самому чистить реестр, а значит нужно самому хранить ключи реестра, которые должны быть удалены при деинсталляции.
Вот я и хотел заставить установщик и писать в реестр и удалять ключи...

Очень жаль, что в препроцессор нельзя передать переменную из кода.
Мне не удалось справиться даже через промежуточный INI файл.
То есть, я записывал мою переменную в INI файл во время исполнения скрипта, а при нажатии кнопки Install эта переменная должна была прочитаться из файла и использоваться в цикле.
Так вот, в секции кода можно полностью управлять папками (указывать хоть абсолютный, хоть относительный путь), а в препроцессоре есть всего две системных константы, которые указывают на папку размещения исходного текста скрипта или исполняемого файла компилятора. В итоге из препроцессора мой INI файл может быть прочитан только в случае, если он лежит по абсолютному пути, что неприемлемо.

El Sanchez
28-02-2015, 10:26
Я так и вынужден сделать »
Zabeal, так и нужно, препроцессор для других задач оставьте.
Дело вот в чём: в реестр я конечно запишу значения, это отлично, но как быть при деинсталляции приложения? »
Zabeal, создать через секцию Registry пару корневых записей в реестре, при деинсталляции все нормально удалится.
[Registry]
; Тут будет создан корневой раздел производителя программы MapInfo.
; При деинсталляции, если этот раздел не будет содержать в себе других подразделов и ключей от других
; программ MapInfo, например, от MapMarker, то корневой раздел можно будет удалять (флаг uninsdeletekeyifempty)
Root: HKCU; SubKey: Software\MapInfo; Flags: uninsdeletekeyifempty
; Удаляем раздел нашей программы MapInfo со всеми подразделами и ключами.
Root: HKCU; SubKey: Software\MapInfo\MapInfo; Flags: uninsdeletekey

Dodakaedr
28-02-2015, 19:16
Допустим имеем такой ini файл [INI]
Filename: "{commonappdata}\file.ini"; Section: "Flag"; Key: "AllUsers"; String: "0";

Подскажите как провести проверку на String: "0";? IniKeyExists не подходит.

nik1967
28-02-2015, 20:55
Dodakaedr, [Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.

[Code]
procedure InitializeWizard();
var
S, P: String;
begin
P:= ExpandConstant('{src}'+'\file.ini');
//P:= ExpandConstant('{commonappdata}'+'\file.ini');
if FileExists(P) then begin
S:= GetIniString('Flag', 'AllUsers', '', P);
if S = '0' then
MsgBox('true', mbInformation, MB_OK)
else
MsgBox('false', mbInformation, MB_OK);
end;
end;

bosenkov5
02-03-2015, 08:34
Доброе утро всем и у меня такой вопрос
Пакую батником Precomp+Srep+FreeArc
и при распаковке ничего не происходит и вопрос:как в ISDone.iss прописать чтобы распаковывалось сначала Precomp потом Srep а потом FreeArc ?
вот пример
if not ISArcExtract ( 1, 10, ExpandConstant('{src}\Setup.bin'), ExpandConstant('{app}\'), '', false, '12345', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;

diman_21Ru
05-03-2015, 14:53
Пытаюсь вставить WizadForm.ComponentsList.WantTabs := True; для нажатия на любое место строки для выбора компонента незнаю куда именно прикрутить стоит Unicode.

Dodakaedr
05-03-2015, 16:05
diman_21Ru, procedure InitializeWizard();
begin
WizardForm.ComponentsList.WantTabs := True;
end;

Kashtan007
05-03-2015, 16:16
Привет форумчане.
Как сделать, чтобы после установки в указанной папке создавался текстовый файл, в который будет выводится список установленных компонентов?
Заранее спасибо за ответ.

diman_21Ru
05-03-2015, 16:17
Dodakaedr, не помогает (

kotyarko@fb
05-03-2015, 17:59
Как сделать, чтобы после установки в указанной папке создавался текстовый файл, в который будет выводится список установленных компонентов? »
Самый простой способ:
Procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
WizardForm.ReadyMemo.Lines.SaveToFile(ExpandConstant('{app}\SelectedComponents.txt'));
end;

Kashtan007
05-03-2015, 18:33
kotyarko@fb, спасибо.

Dodakaedr
05-03-2015, 18:39
Как сделать, чтобы после установки в указанной папке создавался текстовый файл, в который будет выводится список установленных компонентов? »
проверка по индексу компонента[Setup]
AppName=Apps
AppVersion=1.0
DefaultDirName={pf}\Apps

[Components]
Name: Mode; Description: mode; Types: custom; flags: fixed
Name: Mode/SPOnly; Description: SPOnly; Flags: disablenouninstallwarning exclusive
Name: Mode/MPOnly; Description: MPOnly; Flags: disablenouninstallwarning
Name: Mode2; Description: mode; Types: custom; flags: fixed
Name: Mode2/SPOnly2; Description: SPOnly2; Flags: disablenouninstallwarning exclusive
Name: Mode2/MPOnly2; Description: MPOnly2; Flags: disablenouninstallwarning


Type: files; Name: "{app}\components.txt"

[Co[u]de]
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
begin
if WizardForm.ComponentsList.Checked[1] then
SaveStringToFile(ExpandConstant('{app}\components.txt'), 'SPOnly' + #13#10, False);
if WizardForm.ComponentsList.Checked[2] then
SaveStringToFile(ExpandConstant('{app}\components.txt'), 'MPOnly' + #13#10, True);
if WizardForm.ComponentsList.Checked[4] then
SaveStringToFile(ExpandConstant('{app}\components.txt'), 'SPOnly2' + #13#10, True);
if WizardForm.ComponentsList.Checked[5] then
SaveStringToFile(ExpandConstant('{app}\components.txt'), 'MPOnly2' + #13#10, True);
end;
end;

diman_21Ru
05-03-2015, 18:45
Dodakaedr, Вставил код и не помогло (
procedure InitializeWizard();
begin
WizardForm.ComponentsList.WantTabs := True;
end;

Dodakaedr
05-03-2015, 18:52
diman_21Ru, Зачем оно вам? Оно и так выделяется http://i59.fastpic.ru/big/2015/0305/23/f783b408d3f2abe279ce5ddaec72a223.jpg




© OSzone.net 2001-2012