PDA

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


Страниц : 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

acer0072
08-09-2014, 14:00
Уже закипел)) Вот такой простой вопрос. Есть exe файл, иконка не красивая)), хочу чтобы на рабочий стол выводился мой ярлык, с моим рисунком, но запускал он этот exe. Как реализовать? (в рестораторе не получилось поменять иконку)

P.S. вставил IconFilename: "{app}\icon.ico"; иконка появилась на ярлыке, но название ярлыка исчезло((

kotyarko@fb
08-09-2014, 15:52
Есть exe файл, иконка не красивая) »
Иконку екзешнику можно указать так:
[Setup]
SetupIconFile=Icon_Name.ico

Создание ярлыка ещё нужно?

Dodakaedr
08-09-2014, 15:56
Уже закипел)) Вот такой простой вопрос. Есть exe файл, иконка не красивая)), хочу чтобы на рабочий стол выводился мой ярлык, с моим рисунком, но запускал он этот exe. Как реализовать? (в рестораторе не получилось поменять иконку)

P.S. вставил IconFilename: "{app}\icon.ico"; иконка появилась на ярлыке, но название ярлыка исчезло((

В справке про секцию [ICON] прочтите. И покажите полностью вашу строчку иконки.

acer0072
08-09-2014, 16:02
kotyarko@fb - exe не тот, что компилируется, а то что запускает приложение.

Dodakaedr
[Icons]
Name: "{commondesktop}\"; Filename: "{#MyAppExeName}"; Check: IconsCheck; IconFilename: "{app}\icon.ico";


http://i63.fastpic.ru/big/2014/0908/0e/07d3d7c1c822b8745b20a49cecc5bf0e.jpg

Вот так получилось, что изображение поменялось, а название ярлыка - нету.

Nordek
08-09-2014, 17:11
а название ярлыка - нету. »
[Icons]
Name: {commondesktop}\{#MyAppName}; Filename: {#MyAppExeName}; Check: IconsCheck; IconFilename: {app}\icon.ico;

Dodakaedr
08-09-2014, 17:49
Вот так получилось, что изображение поменялось, а название ярлыка - нету. »
Поняли ошибку? Потому что вы его не указали...

acer0072
08-09-2014, 20:03
Да, всем спасибо за помощь.

Nightwishh
09-09-2014, 00:47
Ребят, а не посмотрите код, всё ли правильно#define NeedSize "2100"
#define NeedInstallSize "2590"

[Setup]
OutputDir=.
AppName=аываваыв
AppVerName=ывпывамвапмаывп
DefaultDirName={pf}\dfsdgxfgf

[CustomMessages]
MBCaption=Мб.
GBCaption=Гб.
TBCaption=Тб.
TotalSpaceCaption=Всего места на диске:
FreeSpaceCaption=Доступно места на диске:
InstallSpaceCaption=Требуется места для установки:
NeedSpaceCaption=Требуется места на диске:

[Code_]
var
DirPathLbl, TotalSpaceLbl, FreeSpaceLbl, NeedSpaceLbl, InstallSpaceLbl: TLabel;

//==========***Начало- Необходимое место для установки***==========//
function NumToStr(Float: Extended): String;
begin
Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
SetLength(Result, Length(Result)-1);
end;

function MbOrTb(Float: Extended): String;
begin
if Float < 1024 then Result:= NumToStr(Float) + ExpandConstant(' {cm:MBCaption}') else
if Float/1024 < 1024 then Result:= NumToStr(Float/1024) + ExpandConstant(' {cm:GBCaption}') else
Result:= NumToStr(Float/(1024*1024))+CustomMessage('TBCaption');
end;

procedure GetFreeSpaceCaption(Sender: TObject);
var
FreeMB, TotalMB: Cardinal;
begin
DirPathLbl.Caption:= MinimizePathName(WizardForm.DirEdit.Text, DirPathLbl.Font, DirPathLbl.Width);
GetSpaceOnDisk(ExtractFileDrive(WizardForm.DirEdit.Text), True, FreeMB, TotalMB);
TotalSpaceLbl.Caption:= ExpandConstant('{cm:TotalSpaceCaption}')+MbOrTb(TotalMB);
FreeSpaceLbl.Caption:= ExpandConstant('{cm:FreeSpaceCaption}')+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'%)';
if FreeMb < {#NeedInstallSize} then begin
InstallSpaceLbl.Font.Color:= $0000ff; WizardForm.NextButton.Enabled:= False; end else begin
InstallSpaceLbl.Font.Color:= $000000; WizardForm.NextButton.Enabled:= True;
end;
end;
//==========***Конец- Необходимое место для установки***==========//

procedure InitializeWizard();
begin
WizardForm.DirEdit.Visible:= False;
WizardForm.DiskSpaceLabel.Visible:= False;

DirPathLbl:= TLabel.Create(WizardForm);
with DirPathLbl do begin
Parent:= WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(81), ScaleX(348), ScaleY(14));
AutoSize:= False;
Color:= clNone;
Font.Name:= 'Arial';
Font.Style:= [fsBold, fsItalic];
Font.Size:= 9;
Font.Color:= $ffffff;
Transparent:= True;
end;

TotalSpaceLbl:= TLabel.Create(WizardForm);
with TotalSpaceLbl do begin
Parent:= WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(128), ScaleX(348), ScaleY(14));
AutoSize:= False;
Color:= clNone;
Transparent:= True;
end;

FreeSpaceLbl:= TLabel.Create(WizardForm);
with FreeSpaceLbl do begin
Parent:= WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(144), ScaleX(348), ScaleY(14));
AutoSize:= False;
Color:= clNone;
Transparent:= True;
end;

InstallSpacelbl:= TLabel.Create(WizardForm);
with InstallSpaceLbl do begin
Parent:= WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(160), ScaleX(348), ScaleY(14));
AutoSize:= False;
Caption:= ExpandConstant('{cm:InstallSpaceCaption} ') + MbOrTb({#NeedInstallSize});
Color:= clNone;
Transparent:= True;
end;

NeedSpaceLbl:= TLabel.Create(WizardForm);
with NeedSpaceLbl do begin
Parent:= WizardForm.SelectDirPage;
SetBounds(ScaleX(0), ScaleY(176), ScaleX(348), ScaleY(14));
AutoSize:= False;
Caption:= ExpandConstant('{cm:NeedSpaceCaption} ') + MbOrTb({#NeedSize});
Color:= clNone;
Transparent:= True;
end;
WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpSelectDir: begin
GetFreeSpaceCaption(WizardForm.DirEdit);
end;
end;
end;Пришлось изрядно полазить по чужим скриптам, чтобы слепить это. Там путь установки прописываеться в лейбл и данные о винтах!!!

acer0072
09-09-2014, 10:12
Ещё один вопросик. Вот кусок кода из скрипта

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl";
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl";

[Run]
Filename: "{app}\ConfigLanguageFromSetup.exe"; Parameters: "DriverSearch {language}"; MinVersion: 0.0,5.0;Тут привязка языка интерфейса программы, я так понял, что к языку самого установщика. (взят с оригинального кода установщика), т.е. при выборе английского языка установки, ставится англ.язык и т.к.

Вопрос: как привязать к чекбоксам, чтобы выбирался нужный язык (русский и английский)

kotyarko@fb
09-09-2014, 13:11
Ребят, а не посмотрите код, всё ли правильно »
На вид - да. Вы просто решили спросить или у вас там что-то не работает и вы обратились за помощью?

Вопрос: как привязать к чекбоксам, чтобы выбирался нужный язык (русский и английский) »
Имеется ввиду язык интерфейса установщика?
А так, то {language} - это константа выбранного языка. То есть, если выбран язык "ru" - на месте константы подставится ru.

acer0072
09-09-2014, 14:20
Имеется ввиду язык самой программы.

Т.е. можно написать вместо Parameters: "DriverSearch {language} - Parameters: "DriverSearch ru, будет устанавливаться нужный язык?

Или может слеш нужен?

Nightwishh
09-09-2014, 14:56
На вид - да. Вы просто решили спросить »
Хотел просто спросить...Спасибо!

Dodakaedr
09-09-2014, 15:50
Имеется ввиду язык самой программы. »
Для начала вам нужно узнать как именно программа прописывает язык, это может быть по разному: русский - ru, rus, russian; английский - en, eng, english, enu. Потом уже прописываете у себя в скрипте

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl";
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl";

[Run]
Filename: "{app}\ConfigLanguageFromSetup.exe"; Parameters: "DriverSearch {language}"; MinVersion: 0.0,5.0;
или

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

[Run]
Filename: "{app}\ConfigLanguageFromSetup.exe"; Parameters: "DriverSearch {language}"; MinVersion: 0.0,5.0;
или

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

[Run]
Filename: "{app}\ConfigLanguageFromSetup.exe"; Parameters: "DriverSearch {language}"; MinVersion: 0.0,5.0;

а теперь
как привязать к чекбоксам, чтобы выбирался нужный язык (русский и английский) »
Создаете чекбоксы:

[Code]
var
rus, eng: TNewCheckBox;

procedure InitializeWizard();
begin
rus := TNewCheckBox.Create(Form);
with rus do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(8);
Top := ScaleY(36);
Width := ScaleX(97);
Height := ScaleY(17);
Caption := 'Русский';
end;

eng := TNewCheckBox.Create(Form);
with eng do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(8);
Top := ScaleY(36);
Width := ScaleX(97);
Height := ScaleY(17);
Caption := 'Английский';
end;
Добавляете чекову функцию для чекбоксов:

[Code]
var
rus, eng: TNewCheckBox;

function RusCheck: Boolean;
begin
Result:=rus.Checked;
end;

function EngCheck: Boolean;
begin
Result :=eng.Checked;
end;

procedure InitializeWizard();
begin
rus := TNewCheckBox.Create(Form);
with rus do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(8);
Top := ScaleY(36);
Width := ScaleX(97);
Height := ScaleY(17);
Caption := 'Русский';
end;

eng := TNewCheckBox.Create(Form);
with eng do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(8);
Top := ScaleY(36);
Width := ScaleX(97);
Height := ScaleY(17);
Caption := 'Английский';
end;

И получаем ответ на ваш вопрос:)

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl";
Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl";

[Run]
Filename: "{app}\ConfigLanguageFromSetup.exe"; Parameters: "DriverSearch en"; MinVersion: 0.0,5.0; Check: EngCheck
Filename: "{app}\ConfigLanguageFromSetup.exe"; Parameters: "DriverSearch ru"; MinVersion: 0.0,5.0; Check: RusCheck

[Code]
var
rus, eng: TNewCheckBox;

function RusCheck: Boolean;
begin
Result:=rus.Checked;
end;

function EngCheck: Boolean;
begin
Result :=eng.Checked;
end;

procedure InitializeWizard();
begin
rus := TNewCheckBox.Create(Form);
with rus do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(8);
Top := ScaleY(36);
Width := ScaleX(97);
Height := ScaleY(17);
Caption := 'Русский';
end;

eng := TNewCheckBox.Create(Form);
with eng do
begin
Parent := WizardForm.SelectDirPage;
Left := ScaleX(8);
Top := ScaleY(36);
Width := ScaleX(97);
Height := ScaleY(17);
Caption := 'Английский';
end;

acer0072
09-09-2014, 16:09
Спасибо.

acer0072
10-09-2014, 21:04
Всем доброго вечера. Вопрос! После закрытия установленной программы, она всё ещё висит в трее. Какой прописать код, чтобы при удалении этой программы, сначало убивался данный процесс, а потом удалялась программа?

nik1967
10-09-2014, 21:22
acer0072, в шапке Ссылки на примеры скриптов:/Закрытие процесса (http://forum.oszone.net/post-2040074-1361.html)

acer0072
10-09-2014, 21:36
Спасибо, будем разбираться

Nordek
10-09-2014, 22:52
в шапке »nik1967, А пример рабочий?
Пример должен как минимум воспроизводиться, а не выводить "Unknown identifier 'GetLogicalDrives'"

Nightwishh
11-09-2014, 00:19
Всем Здравствуйте! Хочу спросить какой вариант более лучше[Setup]
AppName=ауукаукауцацу
AppVerName=вцфвывцычвйц
DefaultDirName={pf}\ывывыувцувцу

[CustomMessages]
avre=надпись

[Code ]
var
Label1: TLabel;

procedure InitializeWizard();
begin
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Parent := WizardForm;
Left := ScaleX(48);
Top := ScaleY(328);
Width := ScaleX(31);
Height := ScaleY(13);
Caption:= CustomMessage('avre');
end;
end;или[Setup]
AppName=ауукаукауцацу
AppVerName=вцфвывцычвйц
DefaultDirName={pf}\ывывыувцувцу

[CustomMessages]
avre=надпись

[Code ]
var
Label1: TLabel;

procedure InitializeWizard();
begin
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Parent := WizardForm;
Left := ScaleX(48);
Top := ScaleY(328);
Width := ScaleX(31);
Height := ScaleY(13);
Caption:= ExpandConstant('{cm:avre} ');
end;
end;Знаю что подобный вопрос был здесь гдето, но я необратил тогда на него внимания...Спасибо

nik1967
11-09-2014, 11:05
nik1967, А пример рабочий? »Не проверял. Был задан вопрос, я нашёл ответ в примерах. Всё.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Возможно поможет ISTask - Библиотека для проверки и завершения процесса прлиложения (http://krinkels.org/threads/istask.2021/) от Genri.




© OSzone.net 2001-2012