Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Chuvakstepan
Дата сообщения: 22.08.2007 21:20

Цитата:
Может я неправельно обьяснил, этот файл должно изменять в папке куда я устанавливаю игру

{app}\config.cfg - так и должно быть, странно, что не работает
Автор: iTASmania_Inc
Дата сообщения: 22.08.2007 21:20
[Удалено]
Хм, не успеваю отвечать!
Автор: Chuvakstepan
Дата сообщения: 22.08.2007 21:22
iTASmania_Inc
функция SaveStringToFile может создавать файл?
Автор: iTASmania_Inc
Дата сообщения: 22.08.2007 21:23
Chuvakstepan
Да!.. А что? Файл копируется, потом с него делается строковая копия - она редактируется и снова пишется в файл, предварительно удалив (перезаписав) его.
Ну я думаю, ты и так всё понял по скрипту!
Автор: Chuvakstepan
Дата сообщения: 22.08.2007 21:26
Понятно, попутно извиняюсь за каламбур
Автор: 4esnok
Дата сообщения: 22.08.2007 21:29
iTASmania_Inc Ты всё правельно понял, просто я сообщение раньше написал
Путь папок к этому файлу в папке в игрой один и тотже всегда, а куда игра установлена уже неимеет значение, так что всё получилось!!! Ура!
Автор: iTASmania_Inc
Дата сообщения: 22.08.2007 21:43
4esnok
Рад, что всё получилось.
Только мучает один вопрос - если пользователь ничего не напишет в соответствующей графе при установке, то получится, что в config.cfg ты увидишь: name "". Интересно, наверное играть при полном отсутствии имени? Поэтому на всякий случай добавь соответствующее условие в скрипт, чтобы обленившийся юзер играл бы под стандартным именем Player
Автор: Chuvakstepan
Дата сообщения: 22.08.2007 21:46
или можно так сделать:
SerialEditUSER.Text:= ExpandConstant('{sysuserinfoname}')

Дописывать после кусочка SerialEditUSER:=TEdit.Create(Page)
Автор: iTASmania_Inc
Дата сообщения: 22.08.2007 21:49
Chuvakstepan

Цитата:
или можно так сделать:

То же вариант, причём на мой взгляд, даже лучше, чем с условием.
Автор: 4esnok
Дата сообщения: 22.08.2007 21:54
Да, так даже лучше, если поленятся, так хоть системное имя будет! Спасибо вам большое, за такою помощь! Помогли мне по полной
Автор: Victor_Dobrov
Дата сообщения: 23.08.2007 03:26
iTASmania_Inc

Цитата:
при определении оперативки вместо 1 Гб - 1022Мб?

При вызове ToMultiple заменить 2 на 64: ToMultiple(TotalRAM, 2) > ToMultiple(TotalRAM, 64)
Объём ОЗУ будет считаться кратным 64Мб (игнорируется кэш BIOSа или память, занятая встроенной видеокартой)

BruteForce

Несоответствия мин. требованиям подсвечиваются, это хорошо. Теперь представим юзера, который при установке игры видит несколько красных строк. Что ему делать? Покупать видюху с 256 или 1024 Мб? Сколько оперативки добавлять? и т. д.

P.S. Твой код создания таблицы втрое больше, а толку?
Автор: omals
Дата сообщения: 23.08.2007 06:44
прошу прощения, но повторю свой вопрос (может не заметили)
в

Код: procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usUninstall then
begin
// тут код запуска FireFox
// затем вывожу месагу
BringToFrontAndRestore;
MsgBox('For correct uninstalling you must close FireFox windows' , mbInformation, MB_OK);
end;
end;
Автор: Chuvakstepan
Дата сообщения: 23.08.2007 09:06
omals
Попробуй поставить BringToFrontAndRestore; после MsgBox('For correct uninstalling you must close FireFox windows' , mbInformation, MB_OK);
Хотя я не уверен, что сработает, ибо надо приписывать BringToFrontAndRestore к определенному компоненту
Автор: omals
Дата сообщения: 23.08.2007 09:33
Chuvakstepan
Пробовал и до и после, и оба. Не помагает.
Автор: Chuvakstepan
Дата сообщения: 23.08.2007 09:54
Могу только предложить использовать системный MessageBox.
Там есть дополнительный флаг MB_SYSTEMMODAL тогда окно сообщения будет поверх любых других окон :

[more=Скрипт][Code]
const
MB_ICONINFORMATION = $40;
MB_ICONEXCLAMATION = $30;
MB_ICONQUESTION = $20;    
MB_ICONSTOP = $10;
MB_ICONNONE = $0;
MB_SYSTEMMODAL = $1000;

function MessageBox(hWnd: Integer; lpText, lpCaption: String; uType: Cardinal): Integer;
external 'MessageBoxA@user32.dll stdcall';

procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
var
hWnd: Integer;
begin
Cancel:=False;
Confirm:=False;
hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
if MessageBox(hWnd, 'The setup is not finished! Do you really want to abort?', 'Exit from Installer', MB_YESNO or $30 + MB_SYSTEMMODAL) = idYes
then
Cancel:=true;
end;

[/more]
Автор: omals
Дата сообщения: 23.08.2007 10:25
Chuvakstepan
спасибо
но не работает
ошибка
Runtime Error at (40:192)
Internal error: Cannot evaluate {wizardhwnd} constant during Uninstall;
Автор: Chuvakstepan
Дата сообщения: 23.08.2007 10:33
omals
Незнаю, как иначе
Ты используешь месагу в UninstallStep, как работают системные месаги там - я не знаю
Может кто-нибудь поможет как отобразить системный MessageBox в процедуре CurUninstallStepChanged
Автор: omals
Дата сообщения: 23.08.2007 11:01
Chuvakstepan
Большое спасибо, таки помог мне
нужно було как ты и написал просто сделать для инносетаповского MsgBox
MsgBox('For correct uninstalling you must close FireFox windows' , mbInformation, MB_OK or $30 + MB_SYSTEMMODAL);

добавить
or $30 + MB_SYSTEMMODAL
и все отлично
спасибо
Автор: iTASmania_Inc
Дата сообщения: 23.08.2007 11:32
Victor_Dobrov

Цитата:
При вызове ToMultiple заменить 2 на 64: ToMultiple(TotalRAM, 2) > ToMultiple(TotalRAM, 64)

Спасибо большое!

P.S.: насчёт проверки системных требований - в оригинальном инсталле СТАЛКЕРа вообще ничего не показано, какие минимальные требования нужны, там на коробке и в мануале лишь написано, но никому это (по крайней мере) не мешало. Может быть, BruteForce будет тоже использовать Readme.txt?


Цитата:
P.S. Твой код создания таблицы втрое больше, а толку?

Если Вы сравниваете со скином Corona, то я рисовал TMemo (опять же, как в СТАЛКЕРе),
как упростить эту процедуру просто не знаю
Автор: Chanka
Дата сообщения: 23.08.2007 11:53
iTASmania_Inc,
А у меня в твоём коде сис. требоваений почему-то не определяется звуковая карта.
Автор: iTASmania_Inc
Дата сообщения: 23.08.2007 12:01
Chanka

Цитата:
А у меня в твоём коде сис. требоваений

Не моём, а Victora_Dobrova
Я его мягко говоря украл, ну то есть полностью списал, только форму изменил слегка.
Поэтому все претензии к создателю, ну или ко мне, если я опять что-то перепутал
Выложи(те) скрин с ошибкой, если не трудно.
Автор: Chanka
Дата сообщения: 23.08.2007 12:13
iTASmania_Inc
Понятно
А никакой ошибки нет. Просто в графе звуковая карта пишет драйвер устройста не обнаружен. Вот так вот. А в Corona Skin все нормально.
Автор: iTASmania_Inc
Дата сообщения: 23.08.2007 13:27
Chanka
Просто ради интереса:
Найди(те) в моём скрипте в комментах (ближе к концу кода):
// Звуковая карта - и удалить всё до SystemString := ....
заменив вот на это:
    RegQueryStringValue(HKLM,'System\CurrentControlSet\Enum\Root\Media\MS_MMDRV','ClassGUID', SoundName); RegGetSubkeyNames(HKLM, 'System\CurrentControlSet\Control\Class\' + SoundName, Keys)
    errCode:= 0; for n:= 0 to GetArrayLength(Keys)-1 do
    if RegQueryStringValue(HKLM, 'System\CurrentControlSet\Control\Class\' + SoundName +'\'+ Keys[n]+'\Drivers\mixer\wdmaud.drv', 'Description', Keys[errCode]) then errCode:= errCode +1
    SetArrayLength(Keys, errCode)
    if errCode = 0 then while (SystemInfoVbs('SoundDevice', 'Description' + IntToStr(errCode), false) <> '') and (Pos('modem', SystemInfoVbs('SoundDevice', 'Description' + IntToStr(errCode), false)) = 0) do begin
    SetArrayLength(Keys, errCode + 1); Keys[errCode]:= SystemInfoVbs('SoundDevice', 'Description' + IntToStr(errCode), false); errCode:= errCode +1
    end
Интересно, а так будет работать?
Автор: PavelSES
Дата сообщения: 23.08.2007 13:30
господа программисты, просьба помочь в нелегком деле
есть скрипт - в котором при установке в hosts добавляются строки...
=====
помогите переделать скрипт чтоб:
1. было в отдельном диалог. окне поле куда ввести ip для записывания в хостс (на случай если он нужен другой)
2. перед записью строк в hosts производилась проверка наличия их там и если они есть то незаписывало их
=====
заранее спасибо (просьба изменить этот скрипт до готового состояния, есл это возможно)
Автор: Chanka
Дата сообщения: 23.08.2007 13:36
iTASmania_Inc
Тот же результат
Автор: iTASmania_Inc
Дата сообщения: 23.08.2007 16:38
Chanka
Тогда не в службу, а в дружбу скачай по шапке новый скин Corona, найди вот эту строку:
CheckList[0].Caption:= 'Пользователь'
А перед ней поставь это:
MsgBox('Inno Setup Corona Skin: ' + IntToStr(GetArrayLength(Keys)), mbError, mb_OK)
Интересно, какая цифра будет в мессаге?

Добавлено:
PavelSES

Цитата:
было в отдельном диалог. окне

А новую страницу можно создать? Или обязательно форму?
Автор: Chanka
Дата сообщения: 23.08.2007 16:49
iTASmania_Inc
Всё работает только на XP.
А на Vist'e нет. И твой код и Corona Skin не определяют звуковую карту.
Автор: iTASmania_Inc
Дата сообщения: 23.08.2007 16:56
Chanka

Цитата:
А на Vist'e нет. И твой код и Corona Skin не определяют звуковую карту.

Ну это уже, наверное для Victora_Dobrova интерсно будет, а не для меня.
Автор: Chanka
Дата сообщения: 23.08.2007 17:20
iTASmania_Inc

Цитата:
Ну это уже, наверное для Victora_Dobrova интерсно будет, а не для меня.

Да наверное. iTASmania_Inc я тебе послал ЛС. Посмотри пожалуйста.

Автор: Chuvakstepan
Дата сообщения: 23.08.2007 17:21
Chanka
Я счастливый обладатель Висты, но у меня всё определяет

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Mail.ru агент - вход не выполнен


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.