Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]
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
Вот так получилось, что изображение поменялось, а название ярлыка - нету.
а название ярлыка - нету. »
[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
Всем доброго вечера. Вопрос! После закрытия установленной программы, она всё ещё висит в трее. Какой прописать код, чтобы при удалении этой программы, сначало убивался данный процесс, а потом удалялась программа?
acer0072, в шапке Ссылки на примеры скриптов:/Закрытие процесса (http://forum.oszone.net/post-2040074-1361.html)
acer0072
10-09-2014, 21:36
Спасибо, будем разбираться
в шапке »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, А пример рабочий? »Не проверял. Был задан вопрос, я нашёл ответ в примерах. Всё.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Возможно поможет ISTask - Библиотека для проверки и завершения процесса прлиложения (http://krinkels.org/threads/istask.2021/) от Genri.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC