Войти

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

МИШАНЧИК
27-12-2011, 01:07
Лександер,
procedure CurStepChanged(CurStep: TSetupStep);
var
HostFile: TStringList;
HostFileName: String;
begin
HostFile := TStringList.Create;
HostFileName:=ExpandConstant('{sys}\drivers\etc\hosts');
try
with HostFile do
if CurStep = ssPostInstall then
begin
LoadFromFile(HostFileName);
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 www.xxx');
Add('127.0.0.1 xxx');
Add('127.0.0.1 xxx');
Add('127.0.0.1 xxx');
DeleteFile(HostFileName);
SaveToFile(HostFileName);
end;
finally
HostFile.free;
end;
end;
Так у меня тоже не получилось. Ошибка та-же "Не могу создать..." и подсвечивается строка "SaveToFile..."

by_gangster
27-12-2011, 12:31
здравствуйте, скажите как можно отредактировать окно приветствия ??? (цвет, смещение в другую сторону, удаление)

Edison007
27-12-2011, 13:31
Лександер, На файле хостс, может стоять атрибут "только чтение" и тогда с ним ничего не сделаешь, сам с этим сталкивался...

Devils Night
27-12-2011, 13:38
LoadFromFile(HostFileName); »И что даёт это? В переводе с английского звучит так "Загрузка из файла", и куда оно загружает, в буфер, так что-ли?

SaveToFile(HostFileName); »Так же не понятно, это что делает? Куда он сохраняет, это типа бекап или что?

R.i.m.s.k.y.
27-12-2011, 13:40
"Загрузка из файла", и куда оно загружает, в буфер, так что-ли? »
в HostFile: TStringList, оттуда же и записывает обратно

by_gangster
27-12-2011, 13:41
помогите создал инсталятор при расспаковке выдаёт ошибку Неверно задан входной файл для ISArcExtract!

МИШАНЧИК
27-12-2011, 13:42
На файле хостс, может стоять атрибут "только чтение" и тогда с ним ничего не сделаешь, сам с этим сталкивался... »
На моём нету. Проблема всё-таки в касперском.
Отключил Касперского и всё нормально добавилось в файл »

valyok666
27-12-2011, 13:43
Devils Night, насколько я понял он загружает файл который есть вносит изменения и сохраняет полученный файл как то так

TROY Diamond
27-12-2011, 13:48
Задание своего значения требуемого места на диске.
Есть ли противоположное параметру "ExtraDiskSpaceRequired"?

В секции "[Setup]" есть параметр "ExtraDiskSpaceRequired", который позволяет "накрутить" увеличить реально-требуемое свободное место на ЖД...
А если МНЕ НАОБОРОТ НУЖНО УМЕНЬШИТЬ... к примеру, во время установки у меня копируются/создаются "временные файлы", которые сразу же удаляются... и места требуется намного меньше.
Но установщик считает размер всего упакованного в него...
Или как задать своё значение требуемого места на ЖД в "стандарте"?

Есть много вариантов, но они только на увеличение: если места не хватает (в соответствии с заданным значением), то кнопка "Далее"/"Установить" не активна.
А если хватает (в соответствии с заданым значением), то "пропускает", НО ДАЛЬШЕ ПОЯВЛЯЕТСЯ "СТАНДАРТНОЕ ОКНО" с предупреждением, что места не хватает!
Это конечно, не страшно, установку можно продолжить, НО пользователя, это может смутить. Как его убрать и/или "подкорректировать стандарт"?!

Я ЗАДАЮ, ЧТО: Требуется, к примеру, 6 ГБ (а содержимое весит около 8 ГБ), если у пользователя есть 6 ГБ (а 8 ГБ, к примеру нет!), то кнопка "Далее" активна, но после нажатия выскакивает "стандартное" предупреждение!

Я даже не знаю как оно называются - обычное стандартное предупреждение выскакивает:
Недостаточно места на диске
"Установка требует не менее ... свободного места, а на выбранном Вами диске доступно только ... Вы желаете тем не менее продолжить установку?"

Можно его убрать?

valyok666
27-12-2011, 13:49
by_gangster, ты справочку видно не читал)

TROY Diamond, там надо к системным функциям вроде обращаться

TROY Diamond
27-12-2011, 13:55
TROY Diamond, там надо к системным функциям вроде обращаться »

Ну так помогите, мне нужно только "стандартное сообщение" о нехватке места убрать!

TROY Diamond
27-12-2011, 14:12
1. Почему не работает этот код для удаления сохранений?

[_Code_]
procedure DeleteSavedGames(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usUninstall then
if DirExists(ExpandConstant('{app}')+'\Profiles') then
if MsgBox(ExpandConstant('{cm:DeleteSave}'), mbInformation, MB_YESNO) = idYes then
DelTree(ExpandConstant('{app}')+'\Profiles', True, True, True)
end;

2. Как в процессе установки запустить, а потом автоматически закрыть какое-нибудь приложение, находящееся в папке установки, но НЕ являющееся "основным" (т.е. это типа "утилита", а НЕ сама устанавливаемая программа), не имеет значение из секции Run или Code? Приложение очень маленькое и для того чтобы оно "сработало", нужно всего пару секунд, поэтому и надо его потом автоматически закрыть?
Наверное, можно как-то "убить" процесс?!

3. Как с помощью [INI] или как-то по другому создать файл, текстовый и другие, НО ТОЛЬКО С ОДНИМ ЗНАЧЕНИЕМ "ВНУТРИ", БЕЗ параметра, никаких "Section", "InstallPath", НЕ надо!
Только одно значение БЕЗ всего - в одну строчку, без кавычек, тире, двоеточий, типа открыл это файл, а там только:

5478549547hutjtiure84509fdjrereire943ukifju894390tgk4t984ij43m

и всё больше ничего нет!

4. Есть ли способ "обновить" дополнить список файлов для деинсталляции?
В процессе установки создаются файлы, о которых установщик "не знает", можно ли их как-то их "вписать"?

Или же просто использовать секцию [UninstallDelete]?

Edison007
27-12-2011, 15:03
by_gangster, рекомендую прочитать справку к IsDone

Devils Night
27-12-2011, 15:15
А переименовать как нибудь можно, ну, на примере SaveToFile(HostFileName);?
Ну что то вроде:
RenFile(HostFileName); или
RenameFile(HostFileName);
незнаю как там идёт

TROY Diamond, Ты вот это вот своё стихотворение хотя бы под спойлер спряч, а!

Serega
27-12-2011, 19:02
Так у меня тоже не получилось. Ошибка та-же "Не могу создать..." и подсвечивается строка "SaveToFile..." »
Честно говоря каспером не пользуюсь и не могу поэкспериментировать, но на сколько понимаю, инсталлятор должен быть запущен из под админа. Попробуйте поэкспериментировать с переименованиями файла с помощью функции:
function MoveFile(lpExistingFileName, lpNewFileName: PChar): BOOL; external 'MoveFileA@kernel32.dll stdcall';
только необходимо предварительно проверять на существование файла в который вы будите переименовывать, т.е. если он существует, то его предварительно нужно удалить.

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

И что даёт это? »
Почитайте здесь (http://www.delphibasics.ru/TStringList.php), а так же можете глянуть здесь (http://www.google.ru/search?hl=ru&newwindow=1&site=&q=TStringList&oq=TStringList&aq=f&aqi=&aql=&gs_sm=e&gs_upl=2264l2264l0l3352l1l1l0l0l0l0l0l0ll0l0&biw=1280&bih=573&cad=cbv&sei=I9b5TsWJNsv1-gb6kcS7AQ)

Есть ли противоположное параметру "ExtraDiskSpaceRequired"? »
На сколько я знаю, нет такого.
Но установщик считает размер всего упакованного в него... »
Так используйте внешние архивы. Прочитайте в справке константа {src}
Можно его убрать? »
Стандартными методами нет, можно перехватывать это сообщение и нажимать автоматом на кнопку, но всё равно само сообщение будет видно.
1. Почему не работает этот код для удаления сохранений? »
Код рабочий, только не совсем понятно, зачем удалять сохранения из {app}, если всё равно её удалять будете или у вас {app} остаётся после деинсталляции?
2. Как в процессе установки запустить, а потом автоматически закрыть какое-нибудь приложение, находящееся в папке установки, но НЕ являющееся "основным" (т.е. это типа "утилита", а НЕ сама устанавливаемая программа), не имеет значение из секции Run или Code? Приложение очень маленькое и для того чтобы оно "сработало", нужно всего пару секунд, поэтому и надо его потом автоматически закрыть? »
Почитайте в справке про секцию [Run]
Наверное, можно как-то "убить" процесс?! »
Можно через код, а можно через taskkill.exe (http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/taskkill.mspx?mfr=true)
3. Как с помощью [INI] или как-то по другому создать файл, текстовый и другие, НО ТОЛЬКО С ОДНИМ ЗНАЧЕНИЕМ "ВНУТРИ", БЕЗ параметра »
TStringList вам в помощь
4. Есть ли способ "обновить" дополнить список файлов для деинсталляции?
В процессе установки создаются файлы, о которых установщик "не знает", можно ли их как-то их "вписать"? »
При деинсталляции можете прописать их проверку на существование и если они существуют, то удалять их или
просто использовать секцию [UninstallDelete]»

semiono
27-12-2011, 22:32
[.code]
procedure DeinitializeSetup();
var
S: TArrayOfString;
F: String;
begin
RegisterServer(not Is64BitInstallMode,ExpandConstant('{app}\AudioTrack.dll'),true)
///...

RegWriteStringValue(HKLM32,'Software\Classes\CLSID\{3A4B9C26-C211-11CF-8A58-0800099D420E}','','[AudioTrack Mono]')
///...

F := ExpandConstant('{app}\Waves.inf');
SetArrayLength(S, 135);
S[000] := '[Version]'
S[001] := 'Signature="$Windows NT$"'
S[002] := ''
///...
SaveStringsToFile(F, S, False)
end;

Подскажите пожалуйста! Если пользователь прерывает остановку, то в секции код получается ошибка,
как бы переменная {app} не определенна. Как зделать выход из кода чтоб он не обрабатывался вообще
если юзер нажимает отмену установки?
Я пытался что-то сообразить типа if ExpandConstant('{app}') <> 0 then но не получается

Вроде пустячёк, помогите скорее

Devils Night
27-12-2011, 22:39
Пара замороченных вопросов
Как сделать такое?:
http://i1.imageban.ru/thumbs/2011.12.27/4e1b2363b83a91f7e401d59112443be2.png (http://imageban.ru/show/2011/12/27/4e1b2363b83a91f7e401d59112443be2/png) http://i2.imageban.ru/thumbs/2011.12.27/a95464c60e385238f6ab903972b1f740.png (http://imageban.ru/show/2011/12/27/a95464c60e385238f6ab903972b1f740/png)
И как сделать так чтобы после установки не было вот этого значка, который в нижнем правом углу?:
http://i2.imageban.ru/thumbs/2011.12.27/7c1d8fc17f06426d245ca64f538e2595.png (http://imageban.ru/show/2011/12/27/7c1d8fc17f06426d245ca64f538e2595/png)

Serega
27-12-2011, 23:09
Если пользователь прерывает остановку, то в секции код получается ошибка, »
Такие вещи нужно делать в:

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
begin
// здесь ваш код...
end;
end;

Как сделать такое? »
В расширенной версии есть редактор форм "WizardForm Designer", добавляете свои страницы и кидаете на форму нужные контролы...
чтобы после установки не было вот этого значка »
По умолчанию его и не должно быть.

Devils Night
27-12-2011, 23:57
В расширенной версии есть редактор форм "WizardForm Designer" »Я вообще знаю что через форму, но и то некоторые функции, но есть одно но, при добавлении они не видны, например:
var
IPAddressEdit1: TIPAddressEdit;

procedure RedesignWizardForm;
begin
IPAddressEdit1 := TIPAddressEdit.Create(WizardForm);
with IPAddressEdit1 do
begin
Name := 'IPAddressEdit1';
Parent := WizardForm.SelectTasksPage;
Left := ScaleX(8);
Top := ScaleY(200);
Width := ScaleX(150);
Height := ScaleY(21);
end;

IPAddressEdit1.TabOrder := 2;
end;

procedure InitializeWizard();
begin
RedesignWizardForm;
end;, на странице этого нет.

Serega
28-12-2011, 00:16
на странице этого нет. »
Скопировал ваш код и у меня TIPAddressEdit есть на странице SelectTasksPage




© OSzone.net 2001-2012