PDA

Показать полную графическую версию : Скрипты 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

Farser21
18-03-2015, 13:51
Dodakaedr, немного не так.
Выбирая компонент, вы выбираете параметр, который применяется в конце установки. Выбрав же 2 компонента, соответственно в конце установки будет применено 2 параметра. Но последний параметр заменит все предыдущие, а мне нужно чтобы последний параметр, не заменял предыдущий, а суммировался к нему, чтобы в итоге в конфиге было 2 параметра, а не 1.

P.S. Могу для наглядности в лс скинуть то что получилось сделать.

MKN
18-03-2015, 16:30
Подскажите пожалуйста - какая общая уникальная сигнатура у InnoSetup инсталляторов ?

К примеру, то что предлагается здесь : http://file-extension.net/seeker/file_extension_exe , а именно - 4D 5A 50 00 02 00 00 00
- лажа полная, т.к. определяет принадлежность к куче других исполняемых файлов, не имеющих никакого отношения к ISS ...

Может можно детектировать ISS по строке 49 6E 6E 6F 20 53 65 74 75 70 ? Она вроде как присутствует во всех InnoSetup инсталляторах... Или всё же есть нечто другое, конкретно уникальное ?

Соломон_Кейн@vk
18-03-2015, 16:42
Подскажите пожалуйста, как написать скрипт, чтобы путь установки брался из реестра. Просто есть два ключа реестра. Один для х64 винды, другой для х32 винды. Как сделать так, чтобы папка в любом случае определялась правильно?
Вот мой код с ключем реестра для х64 винд

[Code]
function GetInstallDir(Dir: string): string;
begin
Dir := '';
RegQueryStringValue(HKLM, 'Software\Wow6432Node\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir);
Result := Dir;
end;

Ключ реестра для х32 винд -
RegQueryStringValue(HKLM, 'Software\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir)

Заранее спасибо.

kotyarko@fb
18-03-2015, 16:53
Просто есть два ключа реестра. Один для х64 винды, другой для х32 винды. Как сделать так, чтобы папка в любом случае определялась правильно? »
Попробуйте так:
Function GetInstallDir(Dir: String): String;
var
Win64: String;
begin
Dir := '';
case IsWin64 of
True: Win64 := '\Wow6432Node';
False: Win64 := '';
end;
RegQueryStringValue(HKLM, 'Software' + Win64 + '\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir);
Result := Dir;
end;

Соломон_Кейн@vk
18-03-2015, 17:03
kotyarko@fb, увы, строка установки пуста.

kotyarko@fb
18-03-2015, 17:11
увы, строка установки пуста. »
А код, который вы привели, работает?
Ветка, которую вы указали, правильная?

Вообще, лучше по-умолчанию указать какую-то директорию и сделать проверку на присутствие значения в "InstallFolder" по указанной ветке реестра.
[Setup]
DefaultDirName={code:GetInstallDir}

[*Code]
Function GetInstallDir(Dir: String): String;
var
DestDir, Win64: String;
begin
Dir := ExpandConstant('{pf}\Games\GTA IV');
case IsWin64 of
True: Win64 := '\Wow6432Node';
False: Win64 := '';
end;
RegQueryStringValue(HKLM, 'Software' + Win64 + '\Rockstar Games\Grand Theft Auto IV', 'InstallFolder', DestDir);
if DestDir <> '' then
Result := DestDir
else
Result := Dir;
end;

Соломон_Кейн@vk
18-03-2015, 17:20
kotyarko@fb, да.

kotyarko@fb
18-03-2015, 17:31
Соломон_Кейн@vk, извиняюсь, невнимательно написал.
Данный кусок (из первого моего варианта):
RegQueryStringValue(HKLM, 'Software' + Win64 + '\Wow6432Node\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir);
Замените на:
RegQueryStringValue(HKLM, 'Software' + Win64 + '\Rockstar Games\Grand Theft Auto IV','InstallFolder', Dir);
Подкорректировал свои сообщения выше.

Соломон_Кейн@vk
18-03-2015, 17:35
kotyarko@fb, огромное вам спасибо. Теперь работает :)

Kashtan007
18-03-2015, 21:32
Можно ли сделать, чтобы перед началом установки по пути Windows\Fonts удалялся определенный шрифт?
Заранее спасибо!

kotyarko@fb
19-03-2015, 00:22
Можно ли сделать, чтобы перед началом установки по пути Windows\Fonts удалялся определенный шрифт? »
Так:
Function InitializeSetup(): Boolean;
begin
DeleteFile(ExpandConstant('{fonts}\MyFont.ttf'));
Result := True;
end;

Соломон_Кейн@vk
20-03-2015, 08:53
Подскажите пожалуйста, как сделать так, чтобы во время установки инсталятора, не выскакивало диалоговое окно о том, что файл только "для чтения". Чтобы инсталятор не спрашивая заменял подобные файлы, и диалоговое окно не выскакивало. Заранее спасибо.

kotyarko@fb
20-03-2015, 09:43
Чтобы инсталятор не спрашивая заменял подобные файлы, и диалоговое окно не выскакивало. »
Если я правильно вас понял, допишите файлам:Flags: ignoreversion

Соломон_Кейн@vk
20-03-2015, 10:04
kotyarko@fb, это уже было прописано в скрипте, а проблема все равно есть.
Вот скриншот, чтобы вы поняли, какого рода проблема.
http://img.hurtom.com/i/2015/03/Dwm2015-03-2008-56-52-70.jpg

Нажимая "Повторить", атрибут "Только для чтения" снимается, установка продолжается ровно до того файла, который, как и этот, "Только для чтения".

kotyarko@fb
20-03-2015, 10:21
Нажимая "Повторить", атрибут "Только для чтения" снимается, установка продолжается ровно до того файла, который, как и этот, "Только для чтения". »
А, вот теперь понял. Допишите файлу:
Flags: overwritereadonly

Соломон_Кейн@vk
20-03-2015, 10:24
Огромное спасибо.

kotyarko@fb
20-03-2015, 10:35
А если дописывать папке, на файлы в ней эта опция действует? »
Должна, если также указан флаг recursesubdirs.

Соломон_Кейн@vk
20-03-2015, 10:44
Работает. Только вот беда. Уже 2 раза устанавливаю, и 2 раза "Проводник прекратил работу". Я в недоумении, как это убрать?

Фух, оказалось, элементарное совпадение от предыдущих операций на компе.

Kashtan007
20-03-2015, 15:33
Из-за чего может возникать данная ошибка?
http://i072.radikal.ru/1503/be/4290c488d82b.png

kotyarko@fb
20-03-2015, 15:34
Из-за чего может возникать данная ошибка? »
Много из-за чего. Скрипт можно запустить по F8 и узнать, что именно выдаёт ошибку.




© OSzone.net 2001-2012