Войти

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


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

LinkOFF
09-11-2011, 21:14
Подскажите пожалуйста что нужно прописать в скрипте чтоб распаковывались зашифрованные архивы(пароль).Скрипт Isdone

No4noylis
09-11-2011, 21:27
LinkOFF, Какие именно архивы??? Если *.arc то здесь пароль пиши, если не ошибаюсь:

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, 'Твой пароль', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;

krutx
10-11-2011, 13:41
Доброго времени суток!
Необходим пример чтения xml файла. Объяснюсь. Я видел пример, как писать и/или заменять данные в xml, но никак не могу разобраться, как можно пробежаться по дереву и вытащить необходимые данные.
Пример xml:
читать дальше »
Что понятно.
читать дальше »
Что хочется.
1. Вытащить список елементов. После метода xmlParser.getElementsByTagName('element_12'); получить список имен элементов входящих в "element_12". Т.е.
element_121
element_122
element_123
Метод, который бы это сделал я не нашел.
2. Вытащить список атрибутов. Т.е. я получил список элементов по имени с помощью метода xmlParser.getElementsByTagName('element_122');, если использовать xml выше, то элемент будет один, но возможно их будет и несколько, а потом получить список
attr1
attr2
attr3
Опять таки я не понимаю, как вытащить названия самих атрибутов.
При переборе названий хотелось бы иметь метод получения значение атрибута. Его я то же не смог найти. »
notepad++ тебе в помощ

Gugle
10-11-2011, 14:20
notepad++ тебе в помощ »
Немного более развернутый ответ не помешал бы... По возможности.

Rikill
10-11-2011, 15:34
Gugle, он глупость сказал.

valyok666
10-11-2011, 15:39
Rikill, +1 Gugle, спрашивает как средствами инно вытащить их, а не notepad

krutx
10-11-2011, 15:42
Gugle, он глупость сказал. »
ну вообщн не глупость, он отвечает всем требованиям Gugle.
Rikill, +1 Gugle, спрашивает как средствами инно вытащить их, а не notepad »
То что именно через инно нужно он не писал, ну или я не заметил.

valyok666
10-11-2011, 15:55
krutx, а форум чему посвящён по-твоему?

krutx
10-11-2011, 17:16
krutx, а форум чему посвящён по-твоему? »
ну может ему нужно это для инно, но ему нужно делать это не обязательно в инно

valyok666
10-11-2011, 17:34
krutx, ну а если надо во время установки это сделать?так что харе флуд разводить

El Sanchez
10-11-2011, 18:53
Необходим пример чтения xml файла »
Gugle, пример xml никуда не годится, исправил на такой:


<root>
<element_1></element_1>
<element_11></element_11>
<element_12>
<element_121 attr1='121.1' attr2='121.2' attr3='121.3'></element_121>
<element_122 attr1='122.1' attr2='122.2' attr3='122.3'></element_122>
<element_123 attr1='123.1' attr2='123.2' attr3='123.3'></element_123>
</element_12>
<element_13></element_13>
<element_2>
<element_21></element_21>
<element_22></element_22>
<element_23></element_23>
</element_2>
<element_3></element_3>
</root>



Парсер будет сильно зависеть от самого xml, нужные ноды могут быть где угодно в иерархии, с/без аттрибутами. Для данного примера скрипт может быть такой:

...
objXMLDoc := CreateOleObject('Microsoft.XMLDOM'); //создаем объект
objXMLDoc.async := False; //синхронный режим
objXMLDoc.load('d:\Program Files\Inno Setup 5\Projects\test\Output\test.xml'); //грузим файл
XMLPath := '//root/element_12'; //выделяем нужные ноды. Эта строка может быть очень большой
if objXMLDoc.parseError.errorCode <> 0 then Exit; //если структура файла не xml, выходим
objNodes := objXMLDoc.selectNodes(XMLPath); //получаем список нод в зависимости от ранее заданного XMLPath
if objNodes.length > 0 then for i := 0 to objNodes.Length-1 do //в данном случае нода будет всего лишь одна
if objNodes.item[i].hasChildNodes then //если нода имеет дочерние ноды,...
for j := 0 to objNodes.item[i].childNodes.length-1 do //... то для всех детей...
begin
MsgBox(objNodes.item[i].childNodes.item[j].nodeName, mbInformation, MB_OK); //...выводим имя дочерней ноды,
for k := 0 to objNodes.item[i].childNodes.item[j].attributes.length-1 do
begin
MsgBox(objNodes.item[i].childNodes.item[j].attributes.item(k).name, mbInformation, MB_OK); //...названия ее аттрибутов
MsgBox(objNodes.item[i].childNodes.item[j].attributes.item(k).value, mbInformation, MB_OK); //...и значения аттрибутов
end;
end;

Devils Night
10-11-2011, 19:36
Проблема, при установке не записываются записи реестра, как решить?
; Служба 2
Root: HKLM; SubKey: SYSTEM\CurrentControlSet\Services\Служба; ValueType: string; ValueName: DisplayName; ValueData: Служба; Flags: uninsdeletekey
Root: HKLM; SubKey: SYSTEM\CurrentControlSet\Services\Служба; ValueType: string; ValueName: ObjectName; ValueData: LocalSystem; Flags: uninsdeletekey
Root: HKLM; SubKey: SYSTEM\CurrentControlSet\Services\Служба\Enum; ValueType: string; ValueName: 0; ValueData: Root\LEGACY_СЛУЖБА_SERVICE\0000; Flags: uninsdeletekey записываются нормально, а

[Registry]
; Служба 1
Root: HKLM; SubKey: SYSTEM\CurrentControlSet\Enum\Root\LEGACY_СЛУЖБА_SERVICE\0000; ValueType: string; ValueName: Service; ValueData: Служба; Flags: uninsdeletekey
Root: HKLM; SubKey: SYSTEM\CurrentControlSet\Enum\Root\LEGACY_СЛУЖБА_SERVICE\0000; ValueType: string; ValueName: Class; ValueData: LegacyDriver; Flags: uninsdeletekey
Root: HKLM; SubKey: SYSTEM\CurrentControlSet\Enum\Root\LEGACY_СЛУЖБА_SERVICE\0000; ValueType: string; ValueName: DeviceDesc; ValueData: Служба; Flags: uninsdeletekey
Root: HKLM; SubKey: SYSTEM\CurrentControlSet\Enum\Root\LEGACY_СЛУЖБА_SERVICE\0000\Control; ValueType: string; ValueName: ActiveService; ValueData: Служба; Flags: uninsdeletekey не хочет, пишет Отказано в доступе, что делать?
так что харе флуд разводить »Сам же спрашивает, а потом ещё говорит харе флудить:lol:.valyok666, krutx, вы оба могли бы и через ПМ об этом поспорить.

Rikill
10-11-2011, 20:18
Devils Night, попробуй в конце строчек добавить это: Permissions: full

Devils Night
11-11-2011, 01:00
попробуй в конце строчек добавить»Не работает, пишет ошибку: Parameter "Permissions" includes a malformed value "full"

Arsi000
11-11-2011, 16:09
друзья! подскажите пожалуйста что значит в секции Files флаг Flags: ignoreversion gacinstall
ну ignoreversion понятно, а вот что такое gacinstall? для чего это надо и в каких случаях может знает кто

derfyt
11-11-2011, 19:19
У меня такой вопрос что нужно написать в скрипте чтобы...
Он устанавливал дополнительные программы перед установкой главной программы..
Ну что то типо: запустил Setup.exe; Нажал далее выбрал директорию типо началась установка, но сначала вылетело окно с directx установкой... (типо установите сначала это)..

krutx
11-11-2011, 21:13
как сделать сильное сжатие (используя только инно)
у меня в скрипте параметры сжатия
Compression=lzma2/ultra64
LZMAMatchFinder=BT
LZMAUseSeparateProcess=true
LZMANumFastBytes=273
LZMADictionarySize=131072
InternalCompressLevel=ultra64
SolidCompression=true
MergeDuplicateFiles=true

Rikill
11-11-2011, 21:42
krutx, ну всё. Максимум.
derfyt , почему бы не сделать установку direct x обязательной после установки программы? С помощью секции [run]?

insombia
11-11-2011, 22:42
вот мой скрипт переделанный valyok666 может кому надо готовый скрипт для CODMW3
http://rghost.ru/29571811

Vista-w
12-11-2011, 00:00
insombia,
В секции [*run]
измени на это
-------------------------
Check: CheckError and SoftCheck
Не будет окон ошибок установки DirectX VC++ и т.д
-------------------------
И кнопку далее на странице SelectDirPage преименуй на "Установить" а то юзверь будет думать, что имеется еще какойнить шаг перед установкой.
-------------------------




© OSzone.net 2001-2012