Показать полную графическую версию : [архив] Скрипты Inno Setup. Помощь и советы [часть 2]
Добрый день! У меня возникла небольшая проблема в понимании языка структуры Source в Inno Setup.
Дело в том, что первое окно установки у меня создано посредством скрипта (code), где имеется edit_box. Мне нужно продумать 2 варианта: если в edit_box введено правильное выражение, то в Source необходимо копировать файлы для полной версии программы; если же edit_box пустое или неверное, то устанавливать файлы демо-версии. Вопрос в том, как реализовать этот if и какова структура Source? Например,
Source: "{code:version}/*.dll"; DestDir: "{app}\Programs"
т.е. тут возможны либо "Full/*.dll", либо "Demo/*.dll" (эти папки уже созданы, и в них лежат соответствующие файлы).
BlackSelf
16-06-2010, 00:23
Cinot, ну, например, так (добавьте к своему скрипту):
[Files]
Source: "D:\file1.txt"; DestDir: "{app}\Programs"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: not Full;
Source: "D:\file2.txt"; DestDir: "{app}\Programs"; Flags: ignoreversion recursesubdirs createallsubdirs; Check: Full;
[Code]
var
FullCheck: TCheckBox;
function Full: Boolean;
begin
Result:=FullCheck.Checked;
end;
procedure InitializeWizard;
begin
FullCheck := TCheckBox.Create(WizardForm);
with FullCheck do
begin
Parent := WizardForm;
Left := 0;
Top := 0;
Width := 0;
Height := 0;
TabOrder := 0;
Checked := False;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
var
s: string;
begin
if CurStep = ssinstall then
begin
s:=Edit.Text;
If s='12345' then FullCheck.Checked:=True
else FullCheck.Checked:=False;
end;
end;
R.i.m.s.k.y.
16-06-2010, 08:42
Вопрос в том, как реализовать этот if и какова структура Source »
Source: "{code:version}/*.dll"; DestDir: "{app}\Programs"; Check: MyCheck
[_Code]
Function MyCheck():boolean;
Begin
//проверка что-то где-то введено
End;
Примерно так.
Если MyCheck возвращает True, то строчка с Check: MyCheck выполняется, если MyCheck возвращает False, то строчка с Check: MyCheck пропускается
Извините, а более полного примера у Вас не найдётся? У меня что-то ничего не получается сделать на основе этого =)
R.i.m.s.k.y.
16-06-2010, 11:59
более полного примера у Вас не найдётся »
Надейтся, вот из справки:
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; Check: MyProgCheck
Source: "A\MYFILE.TXT"; DestDir: "{app}"; Check: MyDirCheck(ExpandConstant('{app}\A'))
Source: "B\MYFILE.TXT"; DestDir: "{app}"; Check: DirExists(ExpandConstant('{app}\B'))
[_Code]
var
MyProgChecked: Boolean;
MyProgCheckResult: Boolean;
function MyProgCheck(): Boolean;
begin
if not MyProgChecked then begin
MyProgCheckResult := MsgBox('Do you want to install MyProg.exe to ' + ExtractFilePath(CurrentFileName) + '?', mbConfirmation, MB_YESNO) = idYes;
MyProgChecked := True;
end;
Result := MyProgCheckResult;
end;
function MyDirCheck(DirName: String): Boolean;
begin
Result := DirExists(DirName);
end;
Вот из моего инсталлера
[Components]
Name: mpc; Description: Настройки Media Player Classic Home Cinema; Check: mpcexists
[_Code]
function mpcexists(): Boolean;
Var MPCPath: string;
begin
RegQueryStringValue(HKLM, 'SOFTWARE\Gabest\Media Player Classic','ExePath', MPCPath);
if FileExists (MPCPath) then Result := True else Result := False;
end;
Функцию Check можно лепить во все секции кроме Code и Setup
R.i.m.s.k.y.
16-06-2010, 16:08
Спасибо, очень помогло »
Пожалуйста, я конечно, не Serega, но чем смогу - помогу.
Офф: а есть подобный форум по Visual Basic? Чтобы с примерами и справкой с чего начать
Доброго времени суток! Хотелось бы спросить про доп. программное обеспечение игры:
После установки игры DirectX и всякая мелкая дребедень дополнительная копируется в папку с игрой и устанавливается, после чего так и остается там, а можно сделать так, чтобы после установки этих программ их exe-шники автоматически удалялись из папки!?
SeDmY,
А зачем копировать DirectX и всякую мелкую дребедень в папку с игрой?
[Run]
Filename: "{src}\DirectX\DXSETUP.exe"; WorkingDir: "{src}\DirectX"; Parameters: "/silent"; Flags: waituntilterminated
То есть программа работает из директории установки: {src}, и не копируется в папку назначения {app}.
SeDmY,
А зачем копировать DirectX и всякую мелкую дребедень в папку с игрой?
[Run]
Filename: "{src}\DirectX\DXSETUP.exe"; WorkingDir: "{src}\DirectX"; Parameters: "/silent"; Flags: waituntilterminated
То есть программа работает из директории установки: {src}, и не копируется в папку назначения {app}. »
Спасибо за ответ, нужно было втиснуть для стабильной работы, так после установки оставались в папке с игрой! Я сделал немного подругому, в конце добавил :
Source: E:\Games\Support\DirectX\dxwebsetup.exe; DestDir: {app}; Flags: deleteafterinstall
Блин, скрипт выдает мне следующее:
http://www.imagepost.ru/thumbs/155/BpMI2CabT37G.PNG (http://www.imagepost.ru/?v=155/BpMI2CabT37G.PNG)
Что не так!?
Что не так!?
Лишний end; :wink: .
Цитата SeDmY:
Что не так!?
Лишний end; . »
Вот что получается:
http://www.imagepost.ru/thumbs/155/w7Q5iKt9hB6b.PNG (http://www.imagepost.ru/?v=155/w7Q5iKt9hB6b.PNG)
paravozik2009
16-06-2010, 23:03
Извините,а можно к Inno привязать как-то распаковку cab файлов?
R.i.m.s.k.y., у меня ещё небольшой вопрос по поводу поиска по реестру.
Я ищу установленные AutoCAD'ы на компьютере. Все они в реестре имеют вид по такому шаблону:
HKEY_LOCAL_Machine\SOFTWARE\Autodesk\AutoCAD\16.2\409:5005 (а дальше - ключи)
HKEY_LOCAL_Machine\SOFTWARE\Autodesk\AutoCAD\17.1\519:6007 (а дальше - ключи)
Нужно организовать перебор по этим папкам (внутри - перебор по соответствию ключа "ProductName" членам "рукотворного" списка). Я писал, писал, и запутался:
if RegGetSubkeyNames(HKEY_LOCAL_Machine, 'SOFTWARE\Autodesk\AutoCAD\', Names) then
begin
for i:=0 to GetArrayLength(Names)-1 do
if RegGetSubkeyNames(Names[i], Names2) then
begin
for j:=0 to GetArrayLength(Names2)-1 do
if RegGetSubkeyNames(Names2[j], Names3) then
begin
for k:=0 to GetArrayLength(Names3)-1 do
if (Names3[k] = 'ProductName') and ...
paravozik2009, Именно .cab файлов? Или всё же файлов .arc, переименованных в файлы .cab?
Нужна помощь:
http://www.imagepost.ru/thumbs/155/s30mXQZgB7TE.PNG (http://www.imagepost.ru/?v=155/s30mXQZgB7TE.PNG)
как мне поступить!?
Запустил скрипт : http://forum.ru-board.com/topic.cgi?forum=5&topic=33457&start=1000#20
Даже не менял ничего!
-S.S.V.-
17-06-2010, 22:36
Подскажите пожалуйста, как в скрипте прописать:
Чтобы при установке отображался выбор установки дополнительных компонентов, к примеру:
DirectX и PhysX, чтобы можно было поставить галочку на выборе дополнительного компонента и он бы устанавливался с диска и при этом в тихом режиме.
Заранее благодарю!
R.i.m.s.k.y.
18-06-2010, 10:25
писал, и запутался »
На первый взгляд нормально, должно сработать, только что Вы хотите получить? узнать стоит ли он? Это можно узнать по ключу реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\??? (как дальше я не помню, экспортируйте весь этот ключ и поиском в нем найдите AutoCad)
Если нужны параметры, тогда да, надо читать из указанной Вами ветки реестра.
Можно и через гланды - экспортировать HKEY_LOCAL_Machine\SOFTWARE\Autodesk\AutoCAD\ во временную папку текстовым файлом (reg export) :)
PS: я на выходные.
R.i.m.s.k.y.
18-06-2010, 10:45
Чтобы при установке отображался выбор установки дополнительных компонентов »
[Components]
Name: DIRECTX; Description: Установить DIRECTX версии ...
Name: PsysX; Description: Установить PsysX версии ...
[Run]
Components: DIRECTX; Filename: {src}\DirectX\directx_mar2009_redist.exe; Parameters: " /Q "; StatusMsg: Установка DirectX. Подождите, пожалуйста; Flags: runhidden waituntilterminated
Components: PsysX; Filename: {src}\PsysX\PsysX.exe; Parameters: " ??? "; StatusMsg: Установка PsysX. Подождите, пожалуйста; Flags: runhidden waituntilterminated
Параметры тихой установки PsysX я не знаю. Запустите установщик PsysX с ключом /? (PsysX.exe /?) - он должен написать какой параметр для тихой установки, его и пропишите вместо ???
{src} - путь к файлу вашего скомпилированного установщика. Рядом с этим установщиком должны лежать папки DirectX и PsysX
Всем привет. А скажите как сделать чтобы во время установки игры ,данные об игре попали в реестр?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.