Войти

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


Страниц : 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 127 128 129 130 131 132 133

Serega
14-12-2009, 00:35
Полностью ее переделал осталось пб сделать и все. »
А чем вам стандартный не нравиться?
можно ли добавить еще 2 стр. которые буду отвечать за »
Придётся писать всё руками... MyForm: TUninstallProgressForm; и т.д и т.п.
запрос о удаление и за сообщение о том что удалены фалы? »
Я думаю, в таком случае проще реализовать простые сообщения, т.е. при нахождении папки или файлов, с предложением удалить и если пользователь выбрал Да - то удалять. В конце деинсталляции выдовать сообщение об удачном удалении папки...

МИШАНЧИК
14-12-2009, 08:34
Serega, Неправда, именно это работает... »
У меня и в мыслях не было Вас обманывать. Но у меня не работает. Или можно сказать, что работает неполностью. Дело в том, что если я снимаю чекбокс с a\e\a, то пропадает изображение чекбокса и в a\e, но общий размер в а отображается как при снятом одном чекбоксе a\e\a. Если я после этого снимаю пустой(но, якобы стоящий там) чекбокс a\e, то общий размер а ещё уменьшается.
Я приложил скриншоты и скрипт, чтоб Вы не думали будто я Вас обманываю.
И подскажите пожалуйста почему у меня может быть такая картина и как её исправить.

Winstan
14-12-2009, 08:50
А чем вам стандартный не нравиться? »
Он то мне нравиться но изображение перекрывает все, точнее я все отключил, а то получается то что весит белое окно.
Придётся писать всё руками... MyForm: TUninstallProgressForm; и т.д и т.п. »
Попробую написать.
Я думаю, в таком случае проще реализовать простые сообщения, т.е. при нахождении папки или файлов, с предложением удалить и если пользователь выбрал Да - то удалять. В конце деинсталляции выдовать сообщение об удачном удалении папки... »
Они сейчас появляются, спрашивают удалить или нет и о том что уже удалил файлы.

И еше подскажи процедуру на окошко выбора языков инстала?

Dark Engel
14-12-2009, 09:40
Цитата Dark Engel:
Где ключ это признак установленности программы, а значение это версия. »
Пример »

Гм. Что то данный пример не отрабатывает. установка проходит молча без каких либо вопросов. Ключ в реестре создавал.

1. Какого типа должен быть ключ в реестре? (Dword, REG_SZ итд )
2. Можно ли добавить создание ключа в случае его отсутствия (Первая установка программы).

Serega
14-12-2009, 19:27
Дело в том, что если я снимаю чекбокс с a\e\a, то пропадает изображение чекбокса и в a\e, но общий размер в а отображается как при снятом одном чекбоксе a\e\a. Если я после этого снимаю пустой(но, якобы стоящий там) чекбокс a\e, то общий размер а ещё уменьшается. »
Я понял, что вы имеете ввиду, просто у чебоксов имеющих дочерние элементы, существует три состояния (Unchecked, Checked, Grayed) и на скриншотах, которые вы показали (2.jpg), при снятом дочернем элементе, состояние a\e = Grayed, т.е. квадрат закрашен. Присмотритесь к компоненту a, у него тоже состояние Grayed.

Serega
14-12-2009, 20:11
процедуру на окошко выбора языков инстала? »
Не знаю, покрайней мере я такой не нашёл, т.е. даже попытался осуществить поиск через FindWindowByWindowName в function InitializeSetup, но диалог с выбором языка отрабатывает до того, как задействуется function InitializeSetup...
От сюда, два выхода, самый простой через редактор ресурсов, второй пишите инсталлятор пустышку, который будет запускать ваш инсталлятор и осуществлять поиск диалогового окна, а затем уже производить манипуляции с диалоговым окном через SendMessage.

Что то данный пример не отрабатывает. установка проходит молча без каких либо вопросов. Ключ в реестре создавал »
Прежде всего, я был удивлён когда вы просили осуществить поиск таким образом:

HKLM\Software\UIT\FAP\
\proga1 (Reg_Dword) 1
\proga2 (Reg_Dword) 15
\proga3 (Reg_Dword) 3

т.е. поиск ключа производится:
HKEY_LOCAL_MACHINE\SOFTWARE\UIT\FAP\proga 1
где proga - название программы, а 1 - это версия.
В скрипте же это написано...

P.S.
Я кажется понял, вы наверно заносите:

[HKEY_LOCAL_MACHINE\SOFTWARE\UIT\FAP]
"proga1"=dword:00000001
"proga2"=dword:00000015
"proga3"=dword:00000003

но это совершенно отличается от того, что вы просили.

Dark Engel
15-12-2009, 08:07
Цитата Dark Engel:
Что то данный пример не отрабатывает. установка проходит молча без каких либо вопросов. Ключ в реестре создавал »
Прежде всего, я был удивлён когда вы просили осуществить поиск таким образом:
Код:
HKLM\Software\UIT\FAP\
\proga1 (Reg_Dword) 1
\proga2 (Reg_Dword) 15
\proga3 (Reg_Dword) 3т.е. поиск ключа производится:
HKEY_LOCAL_MACHINE\SOFTWARE\UIT\FAP\proga 1
где proga - название программы, а 1 - это версия.
В скрипте же это написано...
P.S.
Я кажется понял, вы наверно заносите:
Код:
[HKEY_LOCAL_MACHINE\SOFTWARE\UIT\FAP]
"proga1"=dword:00000001
"proga2"=dword:00000015
"proga3"=dword:00000003но это совершенно отличается от того, что вы просили. »

Вы правы. Я неправильно поставил задачу. Если вас не затруднит, подскажите пожалуйста как все таки реализовать мой вопрос.

R.i.m.s.k.y.
15-12-2009, 08:56
Доброе время суток!

Есть самописный скриптик для определения конфигурации компа и применения трех разных reg-файликов.


[Setup]
AppName=test
AppVerName=test
AppPublisher=test
AppPublisherURL=test
AppSupportURL=test
AppUpdatesURL=test
CreateAppDir=no
OutputBaseFilename=test
Compression=lzma
SolidCompression=yes

[Languages]
Name: "russian"; MessagesFile: "compiler:Default.isl"

[Files]
Source: RimPack\Program Files\RimPack\FFDShow\*.reg; DestDir: {tmp}; Flags: ignoreversion uninsrestartdelete setntfscompression
Source: RimPack\Program Files\RimPack\FFDShow\gnu_license.txt; DestDir: {tmp}; AfterInstall: FFD; Flags: ignoreversion uninsrestartdelete setntfscompression

[Code]
function GetSystemMetrics(nIndex: Integer): Integer;
external 'GetSystemMetrics@user32.dll stdcall';

const
NeedMHz0 = 2590;
NeedMHz1 = 1090;

Procedure FFD();

var
resffd, MHz : integer;
hz : Cardinal;
Keys: TArrayOfString;
regffd, reg0ffd, RegEditffd: string;

begin

RegEditffd:= ExpandConstant('{sys}\reg.exe'); reg0ffd:= ExpandConstant('{tmp}\');
regffd := reg0ffd + 'ffdshow.reg';
Exec(RegEditffd, ' import ' + AddQuotes(regffd),ExpandConstant('{sys}'),SW_HIDE, ewNoWait, resffd);

RegGetSubkeyNames(HKLM, 'Hardware\Description\System\CentralProcessor', Keys); // Количество ядер
RegQueryDWordValue(HKLM, 'Hardware\Description\System\CentralProcessor\0', '~MHz', hz);

If (GetArrayLength(Keys) >= 2) and (Hz > NeedMHz0) then
begin MsgBox('Max', mbInformation, mb_Ok);
regffd := reg0ffd + 'ffdshow0.reg';
Exec(RegEditffd, ' import ' + AddQuotes(regffd),ExpandConstant('{sys}'),SW_HIDE,ewNoWait,resffd);
end;

If (GetArrayLength(Keys) >= 2) and (Hz > NeedMHz1) and (Hz < NeedMHz0) then
begin MsgBox('Middle', mbInformation, mb_Ok);
regffd := reg0ffd + 'ffdshow1.reg';
Exec(RegEditffd, ' import ' + AddQuotes(regffd),ExpandConstant('{sys}'),SW_HIDE,ewNoWait,resffd);
end;

If (GetArrayLength(Keys) < 2) and (hz <= NeedMHz1) then
begin MsgBox('Low', mbInformation, mb_Ok);
regffd := reg0ffd + 'ffdshow2.reg';
Exec(RegEditffd, ' import ' + AddQuotes(regffd),ExpandConstant('{sys}'),SW_HIDE,ewNoWait,resffd);
end;

RegWriteDWordValue(HKEY_CURRENT_USER, 'Software\GNU\ffdshow\default', 'resizeDx', GetSystemMetrics(0));

end;

end.


Этот код работает если только его вынести в отдельный скрипт, но в нужном скрипте - работает, но странно: reg-файлы или не применяются, или ffdshow.reg (250Кб) заносится в реестр не полностью!
Как будто не успевает процедура FFD отработать.

Вижу два варианта решения - или как-то увеличить время выполнения или в секции Code только узнать конфигурацию железа, а в секции Run сделать reg import в зависимости от конфигурации.

Собственно вопросы - как увеличить время выполнения кода и как передать переменные из секции Code в секцию Run.

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

Tharnum
15-12-2009, 11:21
Добрый день!

Я столкнулся с интересной проблемой Inno Setup. Мне необходимо изменить окно UNinstaller-а (UninstallProgressForm), чтобы пользователь имел возможность указать причину, по которой он удаляет мое приложение. Убрать существующие контролы и вставить свои - это ерунда. Вопрос вот в чем: как сделать, чтобы после завершения деинсталляции окно анинсталлера не закрывалось и пользователь мог, закончив описание причины, кнопочкой, скажем, "Finish" его закрыть самостоятельно, тем замым завершив процесс деинсталляции?

PS: Да, и небольшой вопрос другого характера: никто не сталкивался с проблемами использования CustomMessages в анинсталлере под Windows 7 (у меня x64 Ultimate)? У меня на этапе компиляции скрипта вылетает окошко с сообщением о том, что имя константы неверно...

Заранее спасибо за ответы!

SinRoma
15-12-2009, 12:20
Взял код из примера по созданию дополнительной папки для пользовательских данных.
Нужна дополнительная, следующая страница подобная созданой.
Подскажите как перейти?



//Определяем дополнительную страницу для Project (с кнопкой «Обзор…»)
var
ProjectDirPage: TInputDirWizardPage;

procedure InitializeWizardCWP();
begin
//Создание дополнительной страницы после указанной wpSelectProgramGroup
ProjectDirPage := CreateInputDirPage(wpSelectProgramGroup,
'Выбор папки с проектами', 'В какой папке будут находиться проекты программы?',
'Пожалуйста, укажите папку, в которой будут сохранены проекты программы.'#13#13'Путь к папке с проектами может быть изменен в "ххх">"ххх".',
False, '');
ProjectDirPage.Add('');
ProjectDirPage.Values[0] := GetPreviousData('ProjectDir', '');
end;

function NextButtonClick(CurPage: Integer): Boolean;
begin
if ProjectDirPage.Values[0] = ''
then
// Указываем путь папки с проектами по умолчанию
ProjectDirPage.Values[0] := (ExpandConstant('{sd}')+'\Projects');
Result := True;
end;

function GetProjectDir(Param: String): String;
begin
Result := ProjectDirPage.Values[0];
end;


// ------- Где то здесь начинается беда...

//Определяем дополнительную страницу для VST (с кнопкой «Обзор…»)
var
VSTDirPage: TInputDirWizardPage;

procedure InitializeWizardVST();
begin
//Создание дополнительной страницы после указанной wpSelectProgramGroup
VSTDirPage := CreateInputDirPage(wpSelectProgramGroup,
// ^^^^^ тут указать предыдущую страницу? как?
'Выбор папки с VST Plugins', 'В какой папке будут находиться VST Plugins?',
'Пожалуйста, укажите папку, в которую будут VST Plugins.'#13#13'Путь к папке с VST Plugins может быть изменен в "ххх">"ххх".',
False, '');
VSTDirPage.Add('');
VSTDirPage.Values[0] := GetPreviousData('VSTDir', '');
end;

function NextButtonClick2(CurPage: Integer): Boolean;
begin
if VSTDirPage.Values[0] = ''
then
// Указываем путь к папке VST Plugins
VSTDirPage.Values[0] := (ExpandConstant('{pf}')+'\VSTPlugins');
Result := True;
end;

function GetVSTDir(Param: String): String;
begin
Result := VSTDirPage.Values[0];
end;

// **************************************************************************************************** ***********************************

//Это страница, в которой отображаются выбранные параметры установки
//Чтобы в нее прописать указанный путь установки папки с проектами, пишем следующую функцию
//По необходимости указываем дополнительные параметры установки (компоненты и т.п.)

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
S := S + MemoDirInfo;
S := S + NewLine + NewLine;
S := S + 'Папка с проектами:' + NewLine + Space;
S := S + ProjectDirPage.Values[0];
S := S + 'VST Plugins:' + NewLine + Space;
S := S + ProjectDirPage.Values[0];
Result := S;
end;



Если оставить как есть компилируется, но при запуске выдаёт сообщение:

Runtime Error (at 6:57)
Could not call proc.

Молодой
15-12-2009, 14:53
Доброго времени суток создал скрипт вроде бы все нормально, но одно "НО"
Ярлык который сохраняется на раб.столе запускает игру из корня папки куда собственно установлена игра,

http://s47.radikal.ru/i118/0912/86/2285de239c26.png

На рисунке видно что запуск идет из корня папки, а что бы запустить игру, надо что бы ярлык ссылался на .exe файл из папки bin, как это поправить.
Вот сам скрипт

[Setup]
AppId={{2FFF3EDA-EFE4-4772-9A96-202597408568}
AppName=Far Cry 2
AppVerName=Far Cry 2
AppPublisher=Repack By BaRS
DefaultDirName={pf}\Far Cry 2
DefaultGroupName=Far Cry 2
OutputDir=C:\Users\BaRS\Desktop\Install\Far Cry 2
OutputBaseFilename=setup
SetupIconFile=C:\Users\BaRS\Desktop\Install\Far Cry 2\FarCry2_2.ico
Compression=lzma/ultra64
SolidCompression=true
InternalCompressLevel=ultra64

[Languages]
Name: english; MessagesFile: compiler:Default.isl
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: D:\Game\Far Cry 2\bin\farcry2.exe; DestDir: {app}; Flags: ignoreversion
Source: D:\Game\Far Cry 2\manual.pdf; DestDir: {app}; Flags: ignoreversion
Source: D:\Game\Far Cry 2\ReadMe.txt; DestDir: {app}; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: {group}\Far Cry 2; Filename: {app}\farcry2.exe
Name: {commondesktop}\Far Cry 2; Filename: {app}\farcry2.exe; Tasks: desktopicon

[Run]
Filename: {app}\farcry2.exe; Description: {cm:LaunchProgram,Far Cry 2}; Flags: nowait postinstall skipifsilent
Filename: {src}\Data_Win32.exe; WorkingDir: {app}; Parameters: -x -y -s2 -d.; StatusMsg: Идет распаковка данных...; Flags: runasoriginaluser
Filename: {src}\bin.exe; WorkingDir: {app}; Parameters: -x -y -s2 -d.; StatusMsg: Идет распаковка данны...; Flags: runasoriginaluser

[Registry]
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: InstallDir; ValueData: D:\Game\Far Cry 2
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: Executable; ValueData: D:\Game\Far Cry 2\bin\FarCry2.exe
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: Language; ValueData: Russian
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: Version; ValueData: 1.03.00
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: SecuROM; ValueData: 1
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: Online; ValueData: 1
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2\GameUpdate; ValueType: string; ValueName: execPath; ValueData: D:\Game\Far Cry 2\bin\FarCry2.exe
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2\GameUpdate; ValueType: string; ValueName: info; ValueData: 2c66b725e7fb0697c0595397a14b0bc8
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2\GameUpdate; ValueType: string; ValueName: installdir; ValueData: D:\Game\Far Cry 2
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2\GameUpdate; ValueType: string; ValueName: language; ValueData: us
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia The Sands of Time\1.00.181; ValueType: string; ValueName: Product_Path; ValueData: D:\Game\Akella Games\Ïðèíö Ïåðñèè - Ïåñêè âðåìåíè
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia The Sands of Time\1.00.181; ValueType: string; ValueName: Product_Executable; ValueData: PrinceOfPersia.exe
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia The Sands of Time\1.00.181; ValueType: string; ValueName: Product_Language; ValueData: 9
Root: HKLM; SubKey: SOFTWARE\Ubisoft\Prince of Persia The Sands of Time\1.00.181; ValueType: string; ValueName: Product_Release; ValueData: Retail EMEA

[Code]
var
NeedSize:Integer; FreeMB, TotalMB: Cardinal; NeedSpaceLabel,FreeSpaceLabel: TLabel;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := 'Свободное место на диске: '+ FloatToStr(round(FreeMB/1024*100)/100) + ' GB' else
FreeSpaceLabel.Caption := 'Свободное место на диске '+ IntToStr(FreeMB)+ ' MB';
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled := False else
WizardForm.NextButton.Enabled := True; end;

procedure GetNeedSpaceCaption;
begin
if NeedSize > 1024 then
NeedSpaceLabel.Caption := 'Требуется как минимум места на диске: '+ FloatToStr(round(NeedSize/1024*100)/100) + ' GB' else
NeedSpaceLabel.Caption := 'Требуется как минимум места на диске: '+ IntToStr(NeedSize)+ ' MB';
end;

procedure InitializeWizard();
begin
NeedSize := 3200;

WizardForm.DiskSpaceLabel.Hide;

NeedSpaceLabel := TLabel.Create(WizardForm);
with NeedSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(202);
Width := ScaleX(209);
Height := ScaleY(13);
end;

FreeSpaceLabel := TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(220);
Width := ScaleX(209);
Height := ScaleY(13);
end;
WizardForm.DirEdit.OnChange := @GetFreeSpaceCaption;
WizardForm.DirEdit.Text := WizardForm.DirEdit.Text + #0;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then begin
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False
end;
end;

[UninstallDelete]
Name: {app}\*.*; Type: filesandordirs




Заранее благодарен за ответ

YURSHAT
15-12-2009, 15:01
а что бы запустить игру, надо что бы ярлык ссылался на .exe файл из папки bin, как это поправить. »

Элементарно!

Name: {commondesktop}\Far Cry 2; Filename: {app}\bin\farcry2.exe; WorkingDir: "{app}\bin"; Tasks: desktopicon

Молодой
15-12-2009, 15:15
Большое спасибо, за помошь!

Serega
15-12-2009, 20:50
как все таки реализовать мой вопрос »

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Code]
function DetectInstall(ProgName: string; ver: Integer): Boolean;
var
Names: TArrayOfString;
ResultDWord: Cardinal;
i: Integer;
s, msg: string;
begin
Result:= True;
if RegGetValueNames(HKEY_LOCAL_MACHINE, 'Software\UIT\FAP', Names) then
begin
for i:= 0 to GetArrayLength(Names)-1 do
if Lowercase(ProgName) = Lowercase(Names[i]) then
begin
RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'Software\UIT\FAP', Names[i], ResultDWord);
if ResultDWord > ver then
begin
msg:= 'Установленная версия новее.';
Result:= False;
end
else msg:= 'Рекомендуется обновить программу.';
if ResultDWord = ver then
begin
msg:= 'Данная версия уже установлена.';
Result:= False;
end;
MsgBox(msg, mbInformation, MB_OK);
Break;
end;
end;
end;

function InitializeSetup(): Boolean;
begin
// указываем название нашей программы и её версию
Result:= DetectInstall('proga2', 16);
end;

Serega
15-12-2009, 21:47
Как будто не успевает процедура FFD отработать. »
Замените все ewNoWait на ewWaitUntilTerminated и будет успевать вноситься.

Подскажите как перейти? »
Должно быть так:

//Определяем дополнительную страницу для Project (с кнопкой «Обзор…»)
var
ProjectDirPage: TInputDirWizardPage;
VSTDirPage: TInputDirWizardPage;

function GetProjectDir(Param: String): String;
begin
Result := ProjectDirPage.Values[0];
end;

function GetVSTDir(Param: String): String;
begin
Result := VSTDirPage.Values[0];
end;

function NextButtonClick(CurPage: Integer): Boolean;
begin
if CurPage = ProjectDirPage.ID then
begin
if ProjectDirPage.Values[0] = '' then // это условие никогда не выполнится
// Указываем путь папки с проектами по умолчанию
ProjectDirPage.Values[0] := (ExpandConstant('{sd}')+'\Projects');
end;
if CurPage = VSTDirPage.ID then
begin
if VSTDirPage.Values[0] = '' then // это условие тоже никогда не выполнится
// Указываем путь к папке VST Plugins
VSTDirPage.Values[0] := (ExpandConstant('{pf}')+'\VSTPlugins');
end;
Result := True;
end;

// **************************************************************************************************** ***********************************

//Это страница, в которой отображаются выбранные параметры установки
//Чтобы в нее прописать указанный путь установки папки с проектами, пишем следующую функцию
//По необходимости указываем дополнительные параметры установки (компоненты и т.п.)

function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
S: String;
begin
S := S + MemoDirInfo;
S := S + NewLine + NewLine;
S := S + 'Папка с проектами:' + NewLine + Space;
S := S + ProjectDirPage.Values[0];
S := S + 'VST Plugins:' + NewLine + Space;
S := S + ProjectDirPage.Values[0];
Result := S;
end;

procedure InitializeWizard();
begin
// InitializeWizardCWP
//Создание дополнительной страницы после указанной wpSelectProgramGroup
ProjectDirPage := CreateInputDirPage(wpSelectProgramGroup,
'Выбор папки с проектами', 'В какой папке будут находиться проекты программы?',
'Пожалуйста, укажите папку, в которой будут сохранены проекты программы.'#13#13'Путь к папке с проектами может быть изменен в "ххх">"ххх".',
False, '');
ProjectDirPage.Add('');
ProjectDirPage.Values[0] := GetPreviousData('ProjectDir', '');

// InitializeWizardVST
//Создание дополнительной страницы после указанной wpSelectProgramGroup
VSTDirPage := CreateInputDirPage(ProjectDirPage.ID,
// ^^^^^ тут указать предыдущую страницу? как?
'Выбор папки с VST Plugins', 'В какой папке будут находиться VST Plugins?',
'Пожалуйста, укажите папку, в которую будут VST Plugins.'#13#13'Путь к папке с VST Plugins может быть изменен в "ххх">"ххх".',
False, '');
VSTDirPage.Add('');
VSTDirPage.Values[0] := GetPreviousData('VSTDir', '');
end;

Winstan
15-12-2009, 22:24
Serega,
Подскажи как в procedure InitializeUninstallProgressForm();
ProgressBar назвать так как он прикрыт изображением.
Если же прописывать пб таким образом как визарде то он бесполезен.

Serega
15-12-2009, 22:34
как в procedure InitializeUninstallProgressForm(); »
Я так полагаю, что изображение загружено на какой-то контрол, если да то:
UninstallProgressForm.ProgressBar.Parent:= ваш контрол;

R.i.m.s.k.y.
16-12-2009, 09:10
Здравствуйте!

Подскажите, пожалуйста, как передать инсталлеру параметр и обработать его в секциях Code, Registry и Run, например инсталлер называется ffd, нужно передать ему параметр auto (ffd.exe /auto).

Точнее надо так, чтобы при параметре /auto инсталлер не отсвечивал лишними окнами (окно прогресса можно, догадываюсь что надо добавить /silent, но при параметре /auto в скрипте должны отрабатываться свои "ветки"), а без этого параметра инсталлер запускался как обычно - с выбором компонентов.

МИШАНЧИК
16-12-2009, 12:47
Serega, подскажите пожалуйста!
Можно ли как-то задать порядок расположение ярлыков устанавливаемого приложения в Пуск-Программы?
Например:
[Icons]
1.Name: {group}\Nero Burning ROM
2.Name: {group}\Nero Express
3.Name: {group}\Nero Vision
4.Name: {group}\Nero CoverDesigner
5.Name: {group}\Nero WavEditor
6.Name: {group}\Утилиты\Nero BurnRights
7.Name: {group}\Утилиты\Nero DiscSpeed
8.Name: {group}\Утилиты\Nero DriveSpeed
9.Name: {group}\Утилиты\Nero InfoTool
10.Name: {group}\Удаление
Потому-что папка Утилиты получается последней, после удаления, а хотелось бы перед ней.

solvador
16-12-2009, 15:00
МИШАНЧИК, в меню пуск файлы сортируются по алфавиту, измените название папки Удаление, чтобы сместить его вниз.




© OSzone.net 2001-2012