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

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

Автор: Qarma
Дата сообщения: 14.04.2009 13:03

Цитата:
Qarma

так:

Код:
[Files]
Source:"logo.bmp";DestDir:{tmp};Flags: dontcopy nocompression


DeKaNszn
Спасибо, вроде помогло


Добавлено:

Цитата:
Qarma
У меня с этим скриптом все нормально, делал репаки нормально!
P.S.: этот скрипт за авторством ЗлогоДеда!!!!

Мм...даже хз
Ещё вопрос....туповатый...
Что означает и за что отвечает эта сточка SlicesPerDisk=3
Автор: htuos
Дата сообщения: 14.04.2009 13:56
SiberianGRemlin

Цитата:
Т.е. цель -- добиться активности окна как во время извлечения файлов, но во время работы своей процедуры. Возможно ли это вообще?

я когда-то выкладывал скрипт копирования файлов
он включен в "сборник скриптов"
ProgressBars_for_CopyOuterFiles.iss
там это реализовано
а вообще мог бы и в дельфях исходники посмотреть
Автор: Yoldosh
Дата сообщения: 14.04.2009 15:38
может кто нибудь мне поможет чтоби в поле отмеченное красним била видна картинка вот код [more][Setup]
AppName=Vin Diesel Wheelman
AppVerName=Vin Diesel Wheelman
DefaultDirName={pf}\Vin Diesel Wheelman
OutputDir=E:\Proekt
WizardImageFile=E:\Logo\WizardImageFile.bmp
WizardSmallImageFile=E:\Logo\WizardSmallImageFile.bmp
DisableReadyPage=true
UninstallFilesDir={app}\Uninstall

[Languages]
Name: "ENG"; MessagesFile: "compiler:Default.isl"
Name: "RUS"; MessagesFile: "compiler:Languages\Russian.isl"

[Files]
Source: "C:\Program Files\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Soft\VCRedist\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: E:\3.bmp; DestDir: {tmp}; Flags: dontcopy
Source: E:\1.bmp; Flags: dontcopy;

[Run]
Filename: {src}\DirectX\dxsetup.exe; Parameters: /silent; StatusMsg: ExpandConstant('{cm:UP}'); Check: DirectX

[CustomMessages]
ENG.PAGE_CAPTION=Setup has finished installing Vin Diesel Wheelman on your computer.
RUS.PAGE_CAPTION=Программа Vin Diesel Wheelman установлена на Ваш компютер.
ENG.STR=Click Finish to exit Setup.
RUS.STR=Нажмите «Завершить», чтобы выйти из программы установки.
ENG.BUT=Install
RUS.BUT=Установить
ENG.SPACE=Available place on disk:
RUS.SPACE=Доступно места на диске:
ENG.SPACE1=Place is Required on disk:
RUS.SPACE1=Требуется места на диске:
ENG.DRT=Will Update DirectX
RUS.DRT=Обновить DirectX
ENG.UP=Goes the renovation DirectX...
RUS.UP=Идет обновление DirectX...
ENG.GB=GB
RUS.GB=Гб

Code
var
Upload: TCheckBox;
bottom_img:TBitmapImage;
lblCheckBox, lblSelectDir, lblSelectDirBrowse: TLabel;
PageNameLabel, PageDescriptionLabel: TLabel;
WLabel1, WLabel2,
FLabel1, FLabel2, FLabel3: TLabel;
NeedSize:Integer;
FreeMB, TotalMB: Cardinal;
NeedSpaceLabel,FreeSpaceLabel: TLabel;
BmpFile: TBitmapImage;

function DirectX: Boolean;
begin
Result:=Upload.Checked;
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
Path: String;
begin
Path := ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Path, True, FreeMB, TotalMB);
if FreeMB > 1024 then
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ FloatToStr(round(FreeMB/1024*100)/100) + ExpandConstant(' {cm:GB}') else
FreeSpaceLabel.Caption := ExpandConstant('{cm:SPACE} ')+ 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 := ExpandConstant('{cm:SPACE1} ')+ FloatToStr(round(NeedSize/1024*100)/100) + ExpandConstant(' {cm:GB}') else
NeedSpaceLabel.Caption := ExpandConstant('{cm:SPACE1} ')+ IntToStr(NeedSize)+ ' MB';
end;

// задал процедуру, чтоб отмечался чебокс еси кликнуть по надписи lblCheckBox
procedure lblCheckBoxOnClick(Sender: TObject);
begin
if Upload.Checked = False then
Upload.Checked:= True else
Upload.Checked:= False;
end;

procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Visible:= False;
ExtractTemporaryFile('1.bmp');
ExtractTemporaryFile('3.bmp');

NeedSize:= 7000;

BmpFile:= TBitmapImage.Create(WizardForm);
BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
BmpFile.Width:= ScaleX(497);
BmpFile.Height:= ScaleY(252);
BmpFile.Parent:= WizardForm.SelectDirPage;


bottom_img:= TBitmapImage.Create(WizardForm);
bottom_img.Bitmap.LoadFromFile(ExpandConstant('{tmp}\3.bmp'));
{первые 2 параметра - координаты левогого верхнего угла по горизонтали и вертикали, дальше ширина и высота,
до которой растянуть}
bottom_img.SetBounds(0, 315, 497, 48);
bottom_img.Parent:= WizardForm;
bottom_img.Stretch:= True;

with WizardForm do
begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
WelcomeLabel1.Hide;
WelcomeLabel2.Hide;
DiskSpaceLabel.Hide;
SelectDirBitmapImage.Hide;
SelectDirBrowseLabel.Hide;
SelectDirLabel.Hide;
FinishedHeadingLabel.Hide;
FinishedLabel.Hide;

DirBrowseButton.Left:= DirBrowseButton.Left + ScaleX(40);
DirBrowseButton.Top:= DirBrowseButton.Top + ScaleY(12);
DirEdit.Left:= DirEdit.Left + ScaleX(40);
DirEdit.Top:= DirEdit.Top + ScaleY(12);

WizardBitmapImage.Width:= 497;
WizardBitmapImage.Height:= 314;
WizardBitmapImage2.Width:= 497;
WizardBitmapImage2.Height:= 314;
with MainPanel do
begin
with WizardSmallBitmapImage do
begin
Left:= Mainpanel.Left;
Top:= Mainpanel.Top;
Width:= Mainpanel.Width;
Height:= MainPanel.Height;
end;
end;
end;

WLabel1:= TLabel.Create(WizardForm);
with WLabel1 do
begin
Left:= ScaleX(176);
Top:= ScaleY(16);
Width:= ScaleX(301);
Height:= ScaleY(54);
AutoSize:= False;
WordWrap:= True;
Font.Size:= 12;
Font.Style:= [fsBold];
Font.Color:= clblack;
ShowAccelChar:= False;
Caption:= WizardForm.WelcomeLabel1.Caption;
Transparent:= True;
Parent:= WizardForm.WelcomePage;
end;

WLabel2:=TLabel.Create(WizardForm);
with WLabel2 do
begin
Top:= ScaleY(76);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(234);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clblack;
ShowAccelChar:= False;
Caption:= WizardForm.WelcomeLabel2.Caption;
Transparent:= True;
Parent:= WizardForm.WelcomePage;
end;

FLabel1:= TLabel.Create(WizardForm);
with FLabel1 do
begin
Left:= ScaleX(176);
Top:= ScaleY(16);
Width:= ScaleX(301);
Height:= ScaleY(54);
AutoSize:= False;
WordWrap:= True;
Font.Size:= 12;
Font.Style:= [fsBold];
Font.Color:= clblack;
ShowAccelChar:= False;
Caption:= WizardForm.FinishedHeadingLabel.Caption;
Transparent:= True;
Parent:= WizardForm.FinishedPage;
end;

FLabel2:=TLabel.Create(WizardForm);
with FLabel2 do
begin
Top:= ScaleY(76);
Left:= ScaleX(176);
Width:= ScaleX(301);
Height:= ScaleY(53);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clblack;
ShowAccelChar:= False;
Caption:= ExpandConstant('{cm:PAGE_CAPTION}');
Transparent:= True;
Parent:= WizardForm.FinishedPage;
end;

FLabel3 :=TLabel.Create(WizardForm);
with FLabel3 do
begin
Top := ScaleY(110);
Left := ScaleX(176);
Width := ScaleX(301);
Height := ScaleY(53);
AutoSize := False;
WordWrap := True;
Font.Color:= clblack;
ShowAccelChar := False;
Caption := ExpandConstant('{cm:STR}');
Transparent := True;
Parent := WizardForm.FinishedPage;
end;

// уменьшил размер CheckBox'а, по другому никак
Upload:= TCheckBox.Create(WizardForm);
with Upload do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(14);
Height:= ScaleY(14);
TabOrder:= 0;
Checked:= False;
end;

// создаём надпись для CheckBox'а
lblCheckBox:= TLabel.Create(WizardForm);
with lblCheckBox do
begin
Caption:= ExpandConstant('{cm:DRT}');
Left:= WizardForm.DirEdit.Left + 20;
Top:= WizardForm.DirEdit.Top + 35;
Width:= ScaleX(150);
Height:= ScaleY(13);
Transparent := True;
Parent:= WizardForm.SelectDirPage;
OnClick:= @lblCheckBoxOnClick;
end;

// создаём lblSelectDir
lblSelectDir:= TLabel.Create(WizardForm);
with lblSelectDir do
begin
Caption:= WizardForm.SelectDirLabel.Caption;
Left:= ScaleX(40);
Top:= WizardForm.SelectDirLabel.Top + ScaleY(12);
Width:= WizardForm.SelectDirLabel.Width;
Height:= WizardForm.SelectDirLabel.Height;
Transparent := True;
Parent:= WizardForm.SelectDirPage;
end;

// создаём lblSelectDirBrowse
lblSelectDirBrowse:= TLabel.Create(WizardForm);
with lblSelectDirBrowse do
begin
Caption:= WizardForm.SelectDirBrowseLabel.Caption;
Left:= ScaleX(40);
Top:= WizardForm.SelectDirBrowseLabel.Top + ScaleY(12);
Width:= WizardForm.SelectDirBrowseLabel.Width;
Height:= WizardForm.SelectDirBrowseLabel.Height;
WordWrap:= True;
Transparent:= True;
Parent:= WizardForm.SelectDirPage;
end;

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

FreeSpaceLabel:= TLabel.Create(WizardForm);
with FreeSpaceLabel do
begin
Parent:= WizardForm.SelectDirPage;
Left:= WizardForm.DirEdit.Left;
Top:= ScaleY(220);
Width:= ScaleX(209);
Height:= ScaleY(13);
Transparent:= True;
end;

WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0;

PageNameLabel:= TLabel.Create(WizardForm);
with PageNameLabel do
begin
Left:= ScaleX(10);
Top:= ScaleY(10);
Width:= ScaleX(300);
Height:= ScaleY(14);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clblack;
Font.Style:= [fsBold];
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;

PageDescriptionLabel:= TLabel.Create(WizardForm);
with PageDescriptionLabel do
begin
Left:= ScaleX(15);
Top:= ScaleY(25);
Width:= ScaleX(475);
Height:= ScaleY(30);
AutoSize:= False;
WordWrap:= True;
Font.Color:= clblack;
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption;
if CurPageID = wpSelectDir then
begin
WizardForm.NextButton.Caption:= ExpandConstant('{cm:BUT}');
GetNeedSpaceCaption;
if FreeMB < NeedSize then
WizardForm.NextButton.Enabled:=False;
with WizardForm do
begin
InnerNotebook.Left := ScaleX(0);
InnerNotebook.Top := ScaleY(60);
InnerNotebook.Width := ScaleX(497);
InnerNotebook.Height := ScaleY(252)
end;
end;
if CurPageID = wpInstalling then
begin
with WizardForm do
begin
BmpFile.Parent:= WizardForm.InstallingPage;
ProgressGauge.Left:= 20;
ProgressGauge.Top:= 160;
ProgressGauge.Width:= 215;
ProgressGauge.Height:= 20;
end;
end;
end;[/more]
Автор: doombuster
Дата сообщения: 14.04.2009 16:36
Объясните пожалуйста. Вот когда создаешь обычный инсталлятор, то на кнопках "Далее", "Обзор" и т.д., нету внизу черты у букв. А когда скинишь кнопки, то названия с черточками: http://s51.radikal.ru/i133/0904/79/1addfaf635ff.jpg
Я понимаю, что это из-за знака "&" в начале слов. Может есть какой нить код, чтоб убирал черту. Неохота править .isl
образец скина, беру из инсталлятора от Inno Setup Scripting v5.1 от Kindly
Автор: Alex Zaguzin
Дата сообщения: 14.04.2009 17:41
doombuster - что мешает убрать "&"? Настолько большой скрипт?
Автор: doombuster
Дата сообщения: 14.04.2009 17:51
"&" убирается в языковых файлах .isl , у меня в скрипте таких символов нет)
Странно просто, почему так происходит. Каждый раз править .isl под нужный инсталл, я думаю не правильно. Вот тут уже был подобный вопрос, но до ответа я недобрался, автор сам ответил, но мне кажется есть код)
Автор: ChVL
Дата сообщения: 14.04.2009 18:14
DeKaNszn
Проверил, не работает.

Serega0675
Понадобилось решить вариант запуска программы из контекстного меню проводника, а поскольку реализовать это программным способом невозможно, то единственный (пока) вариант – мониторинг наличия ключа. Вот тут весьма кстати Ваша идея.
Запустил Ваш скрипт, работает, но… как-то не так. Запускает программу, значения ключей прописывает, но на этом всё и заканчивается, таймер не работает. Если запуск программы в скрипте отключить, то вообще ничего не происходит.
Уточняю алгоритм монитора.
Это самостоятельная программа, помещаться может где угодно, автозагрузка её будет производиться из секции RUN реестра. Монитор должен беспрерывно в фоновом режиме через установленный интервал времени проверять наличие значения в ключе и, при его отсутствии, прописывать необходимые. Эта часть Вашего скрипта работает нормально. Запускать программу он не должен. Вот, собственно, и всё. Вариант, которым я пользовался раньше, имеет проблемы с х64 ОС, да и у Вас всё выглядит грамотнее.
Можно поправить скрипт?

P.S. Душевное спасибо за ссылки на Upgrade Inno 5.2.3. Потрясающе! В первую очередь бросились в глаза богатый интерфейс и подсветка кода…

Тестовый вариант скрипта:
[more]
Код: [Cоde]
function ShowWindow(hWnd: HWND; nCmdShow: Integer): BOOL;
external 'ShowWindow@user32.dll stdcall delayload';

procedure tmr1Timer(Sender: TObject);
begin
if RegValueExists(HKLM, 'Software\My Program\Info', 'Key') = False then
RegWriteStringValue (HKCU, 'Software\My Program\Info', 'Key', '1111');
RegWriteStringValue (HKCU, 'Software\My Program\Info', 'Name', 'User');

end;

function InitializeSetup(): Boolean;
var
res: Integer;
s, p: string;
tmr1: TTimer;

begin
ShowWindow(Application.Handle, SW_Hide);
tmr1:= TTimer.Create(Application);
with tmr1 do begin
Enabled := True;
Interval:= 1000;
OnTimer:= @tmr1Timer;
end;
s:= ExpandConstant('{src}\MyProg.exe');
Exec(s, p, '', SW_SHOWNORMAL, ewWaitUntilTerminated, res);
end;
Автор: Igrikxxx
Дата сообщения: 14.04.2009 18:38
Yoldosh

поищи в скрипте такой код Transparent он и отвечает за белые участки чтобы видно было или небыло... Я бы подкинул тебе готовый но сам непонел еще тама их много!
Автор: Yoldosh
Дата сообщения: 14.04.2009 18:44
Igrikxxx
в коде многа Transparent-a какой отвечает за ето не нашол но я инно не оченьта силеон
Автор: Serega0675
Дата сообщения: 14.04.2009 19:33
ChVL

Цитата:
Запускает программу, значения ключей прописывает, но на этом всё и заканчивается, таймер не работает
А как вы это определили? Ещё раз посмотрел скрипт всё правильно... Вы наверное проверяли так:
запустили программу и открыли regedit.exe, оттуда удалили ключ и обратили внимание, что он назад не появился?
Для того, чтоб увидеть изменения, необходимо перезапустить regedit.exe...

Цитата:
Это самостоятельная программа, помещаться может где угодно, автозагрузка её будет производиться из секции RUN реестра. Монитор должен беспрерывно в фоновом режиме через установленный интервал времени проверять наличие значения в ключе и, при его отсутствии, прописывать необходимые.
Всё правильно, кроме одного. Зачем её помещать в секцию RUN? Она запускает 'жертву' и ждет её завершения, при этом раз в секунду проверяет запись в реестре. После закрытия программы 'жертвы', она сама закрывается. Это легко отследить. Запускаете программу вызываете 'Диспетчер задач Windows' (Ctrl+Alt+Del), в списке процессов вы увидите 'жертву' - MyProg.exe и программу - (MyProgramRun.exe и MyProgramRun.tmp). Причем программа будет работать до тех пор, пока работает MyProg.exe и кушает при этом памяти 5-6 Мб, так для чего тогда её помещать в секцию RUN?

Цитата:
Эта часть Вашего скрипта работает нормально. Запускать программу он не должен.
Просто из предыдущего сообщения я понял, что при запуске какой-то программы удаляется ключ из реестра. Вот я и решил привязать её к запуску программы. Если вам необходимо прописать сторожа на постоянное жительство в системе, то и нужно писать её как процесс, чтоб не кушала лишней памяти, но на Inno, к сожалению, консольную программу не сделаешь...

Цитата:
Можно поправить скрипт?
Да ради бога, делайте с ним, что хотите...

Цитата:
Тестовый вариант скрипта:
Сразу замечание Проверяете ключ HKLM, а записываете в HKCU и добавьте begin, [more=т.е.]
Код: procedure tmr1Timer(Sender: TObject);
begin
if RegValueExists(HKLM, 'Software\My Program\Info', 'Key') = False then
begin
RegWriteStringValue (HKLM, 'Software\My Program\Info', 'Key', '1111');
RegWriteStringValue (HKLM, 'Software\My Program\Info', 'Name', 'User');
end;
end;

Автор: Yoldosh
Дата сообщения: 14.04.2009 20:44
Serega0675
может покажеш как скрить надпись
Автор: msatmb
Дата сообщения: 14.04.2009 20:58
Подскажите пожалуйста каким образом объединить Сплеш-заставку с кодом PreinstallProgress так, чтобы они шли не друг за другом а одновременно. Т.е. запустилась Сплеш-заставка и одновременно с ней запустился преинсталл.
Вопрос снимается, я тормоз Сам делал по одному коду, а выложил другой, присмотревшись понял что все решаемо
Автор: Serega0675
Дата сообщения: 14.04.2009 21:05
Yoldosh
скрыть надписи:
WizardForm.FilenameLabel.Hide; // имена файлов
WizardForm.StatusLabel.Hide; // путь
Автор: ChVL
Дата сообщения: 14.04.2009 21:07
Serega0675

Цитата:
необходимо перезапустить regedit.exe

Насчёт F5 я в курсе дела. А причина в этом:

Цитата:
После закрытия программы 'жертвы', она сама закрывается.

Я же проверял после закрытия программы. Однако нужен монитор, который будет устанавливаться вместе с "жертвой", и будет работать непрерывно и до тех пор, пока "жертва" не будет деинсталлирована. Т.е. это монитор в полном смысле слова, только его работа будет скрыта.
Похоже, я невнятно изложил алгоритм. Основная цель: при запуске "жертвы" (в её обычном, штатном режиме) должен присутствовать ключ, иначе она не будет работать. А дело в том, что запущенная программа при включении или отключении всяких опций сбрасывает ключ, ибо знает, что используют её без разрешения. Вот для этого и нужен мониторинг наличия ключа. Ещё один важный момент: есть возможность запуска программы через контекстное меню проводника, в этом случае невозможно запустить монитор, если он остановлен (так сделано в нынешнем варианте).
В теcтовом варианте скрипта вкрались ошибки при корректировке для поста, прошу прощения. Конечно же, везде HKCU.
Пытался поправить скрипт, но пока не получается, много незнакомых вещей...
Автор: doombuster
Дата сообщения: 14.04.2009 21:09
Yoldosh
Извени конечно, но скрипт у тя конкретный) во время компиляции и с последующим тестом в RUN. каспер такие чудеса выдает) :

14.04.2009 21:46:54    Обнаружено: Worm.P2P.generic    COMPIL32.EXE        C:\PROGRAM FILES\INNO SETUP 5\COMPIL32.EXE    

пипец)

Автор: AleSasha
Дата сообщения: 14.04.2009 21:29
kombat 77

Цитата:
Подгружай из временной папки RTF, мой предыдущий пример был с ошибкой, вот [?] вполне рабочий.

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

Сейчас все работает.

Но появилась, в связи с этим, еще одна проблема:

При попытке использовать в инсталяторе Encryption, возникает ошибка,
что невозможно прочесть RTF-файл, пока не введен ключ.

Что можно в этом случае сделать?


Автор: Serega0675
Дата сообщения: 14.04.2009 21:38
doombuster
так ваш каспер ругается на компилятор Inno, а не на скрипт...

ChVL
можно сделать, чтобы сначала проверялся реестр, а потом запускалась программа. Так же можно поправить и в контекстном меню. Вы скиньте мне в личку, всё, что вам надо сделать, а там посмотрим...
Автор: doombuster
Дата сообщения: 14.04.2009 21:41
Serega0675
Вот компилю свои скрипты и ничего, а как только загрузил скрипт от Yoldosh, и запустил через RUN, так выскочил червь. В этот момент компилятор работает со скриптом

Только что скачал расширенный компилятор и таже петрушка, попробуйте.

Конечно это глюки каспера, он много чего принимает за вирусняк)

Скрипт наколбашен здорово)
Автор: Serega0675
Дата сообщения: 14.04.2009 21:49
doombuster
так вы попробуйте другие скрипты, только с большим количество кода и я больше чем уверен он тоже начнёт кричать... Дело просто в самом каспере...
Автор: kombat 77
Дата сообщения: 14.04.2009 21:51
AleSasha

Цитата:
Что можно в этом случае сделать?

Ставь флаг в секции Files на файл, который шифровать не требуется, в твоём случае ".RTF";
так
[Files]
Source: "My.rtf"; Flags: dontcopy nocompression noencryption;
Он не будет зашифрован.
Автор: Serega0675
Дата сообщения: 14.04.2009 21:54
doombuster

Цитата:
Только что скачал расширенный компилятор и таже петрушка, попробуйте.
Уж нет, увольте, мне такого добра не надо... меня вполне устраивает набор Avast+Dr.Web+Ad-Watch
Автор: doombuster
Дата сообщения: 14.04.2009 21:56
Serega0675


Цитата:
так вы попробуйте другие скрипты, только с большим количество кода и я больше чем уверен он тоже начнёт кричать... Дело просто в самом каспере...

Тоже так считаю)

Не можете мне подсказать ?

Автор: Serega0675
Дата сообщения: 14.04.2009 22:27
doombuster
создаёте в скрипте секцию [Messages] и правите их названия, вот пример [more=всех кнопок]
[Messages]
ButtonBack=< &Назад
ButtonNext=&Далее >
ButtonInstall=&Установить
ButtonOK=OK
ButtonCancel=Отмена
ButtonYes=&Да
ButtonYesToAll=Да для &Всех
ButtonNo=&Нет
ButtonNoToAll=Н&ет для Всех
ButtonFinish=&Завершить
ButtonBrowse=&Обзор...
ButtonWizardBrowse=&Обзор...
ButtonNewFolder=&Создать папку

[/more]
Автор: Lana4ka
Дата сообщения: 15.04.2009 04:45
Еще один вопрос возник:
В инсталляторе нужно создать дополнительную страницу с текстовым полем. В это поле будет вводится цифорка (0-1000)...И вот эту цифорку нужно тоже записать в файл .ini.
Код, который я написала, не выводит цифры...то есть стирает то, что было изначально записано в файле .ini, но то, что прочитал из поля, не пишет...Где я не права?

Код:
[Code]
var
Page: TInputQueryWizardPage;
DirectorNumber: String;
procedure InitializeWizard();
begin
Page:=CreateInputQueryPage(5,'', '', 'Введите рег.номер и нажмите кнопку Далее');
Page.Add('Регистрационный номер:', False);
DirectorNumber:=Page.Values[0];
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
s, p, num: string;
begin
s:= ExpandConstant('{app}');
p:= ExpandConstant('{app}\Data');
StringChange(s, '\', '/');
StringChange(p, '\', '/');
If CurStep = ssDone then
begin
SetIniString('mysqld', 'basedir', AddQuotes(s), ExpandConstant('{app}\my.ini'));
SetIniString('mysqld', 'datadir', AddQuotes(p), ExpandConstant('{app}\my.ini'));
SetIniString('mysqld', 'server-id', DirectorNumber, ExpandConstant('{app}\my.ini'));
SetIniString('mysqld', 'auto_increment_offset', DirectorNumber, ExpandConstant('{app}\my.ini'));
end;
end;
Автор: Yoldosh
Дата сообщения: 15.04.2009 07:19
Serega0675

Спасибо тебе огромное !!!!!
Автор: Serega0675
Дата сообщения: 15.04.2009 07:21
Lana4ka
вы присваиваете значение переменной DirectorNumber в процедуре InitializeWizard, т.е. при инициализации приложения, это равносильно тому, что если просто записать:
DirectorNumber:= '';
надо записать [more=так]
Код: [Code]
var
Page: TInputQueryWizardPage;
DirectorNumber: String;
s, p, num: string;

procedure InitializeWizard();
begin
Page:=CreateInputQueryPage(5,'', '', 'Введите рег.номер и нажмите кнопку Далее');
Page.Add('Регистрационный номер:', False);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
s:= ExpandConstant('{app}');
p:= ExpandConstant('{app}\Data');
StringChange(s, '\', '/');
StringChange(p, '\', '/');
DirectorNumber:= Page.Values[0];
If CurStep = ssDone then
begin
SetIniString('mysqld', 'basedir', AddQuotes(s), ExpandConstant('{app}\my.ini'));
SetIniString('mysqld', 'datadir', AddQuotes(p), ExpandConstant('{app}\my.ini'));
SetIniString('mysqld', 'server-id', DirectorNumber, ExpandConstant('{app}\my.ini'));
SetIniString('mysqld', 'auto_increment_offset', DirectorNumber, ExpandConstant('{app}\my.ini'));
end;
end;

Автор: chelobey
Дата сообщения: 15.04.2009 07:32
Кто о чем, а монах о богомольцах...
Help...
Автор: Yoldosh
Дата сообщения: 15.04.2009 07:43
накладиваю текстуру на кнопок инсталятора но в некторих кнопках текстури нету можете помочь чтобы в кнопках отмеченних в красном была видна текстура
Автор: Lana4ka
Дата сообщения: 15.04.2009 09:17
Serega0675
Красотааааа....Спасибо, Вы меня второй здорово выручили
Автор: AleSasha
Дата сообщения: 15.04.2009 09:48
kombat 77
Цитата:
Ставь флаг в секции Files на файл, который шифровать не требуется

Спасибо!

Такой вопрос:

Можно ли все обьемные элементы (Чекбоксы, Кнопки, Строка Пароля, Скроллбар) сделать плоскими?
Если да, то как?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: в очередной раз босудим антивиры?


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