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

Статус
В этой теме нельзя размещать новые ответы.

ATTACUE

Новичок
Приветствую)
Возможно это сообщение предназначено для sergey3695, так как эту фишку я увидел у него, но буду рад, если кто-то еще знает, как реализовать эту фишку и мне подскажет)


Второй и третий скрины представляют для меня наибольший интерес)
 

ilzok17

Новичок
Всем добрый день и хорошего настроения.Есть такой вопросик:как назначить значок для папки с устанавливаемым приложением?То есть что бы после установки папка была уже со своим значком.Внедрение файла desktop.ini не помогает.Заранее спасибо.
 

Mailchik

Старожил
Проверенный
ATTACUE, код...
 

Tolyak26

Новичок
nik1967, благодарю. Но вот 2 момента неприятных появились еще до твоего исправления:

1. По непонятной причине появилась эта полоска. По идее это YesRadio..
with WizardForm.YesRadio do
begin
Enabled := False;
Visible := False;
end;

2. При английском варианте инсталлятора у меня Кнопка "Finish (Завершить)" немного дальше уезжает, чем в русском варианте. Поправить так и не удалось самому.

 

ilzok17

Новичок
vint56 Спасибо за ссылку,всё сработало,я чуток подредактировал для использования вместо отдельного файла .ico идёт для значка родной .exe. Но возник ещё маленький вопросик:файл Desktop.ini создаёт сам скрипт,но хотелось что бы он был не видимым,а как и где в коде дописать атрибут Attribs: hidden (невидимый) не пойму.
Вот код:
Код:
procedure CreateIni();
begin
SaveStringsToFile(ExpandConstant('{app}\Desktop.ini '), ['[.ShellClassInfo]',
'IconFile=WEI.exe',
'IconIndex=0'], False)
 

nik1967

Old Men
Проверенный
Tolyak26,
1. Это LabelTime3 - найди всё, что с ним связано и удали/закомментируй. Хотя у меня такого нет.
2. В Procedure CurPageChanged(CurPageID: Integer); в if CurPageID=wpFinished then begin добавь WizardForm.NextButton.SetBounds(327, 327, 75, 23);
пример
 
Последнее редактирование:

Tolyak26

Новичок
nik1967, 1 пункт уже исправил. Теперь 2-ой только осталось :) Всё равно, спасибо за помощь.
 

vint56

Ветеран
Проверенный
ilzok17
[Setup]
AppName=Иконка
AppVerName=Иконка
DefaultDirName={pf}\Иконка
DefaultGroupName=Иконка

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

[Dirs]
Name: "{app}"; Attribs: system; AfterInstall: CreateIni();

[Files]
Source: icon.ico; DestDir: {app}

Код:
type
#ifdef UNICODE
  #define A "W"
  PChar = PAnsiChar;
#else
  #define A "A"
#endif

function SetFileAttributes(lpFileName: PChar; dwFileAttributes: DWORD): BOOL; external 'SetFileAttributesA@kernel32.dll stdcall';
//******************************************* [ Папка, в которую устанавливается программа, имеет свою иконку ] ***************************************************//
procedure CreateIni();
begin
SaveStringsToFile(ExpandConstant('{app}\Desktop.ini'), ['[.ShellClassInfo]',
'IconFile=icon.ico',
'IconIndex=0'], False)
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then begin
  SetFileAttributes(PChar(ExpandConstant('{app}\Desktop.ini')), FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM);
end;
end;
//******************************************* [ Папка, в которую устанавливается программа, имеет свою иконку ] ***************************************************//[/SPOILER]
 

ilzok17

Новичок
ilzok17
[Setup]
AppName=Иконка
AppVerName=Иконка
DefaultDirName={pf}\Иконка
DefaultGroupName=Иконка

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

[Dirs]
Name: "{app}"; Attribs: system; AfterInstall: CreateIni();

[Files]
Source: icon.ico; DestDir: {app}

Код:
type
#ifdef UNICODE
  #define A "W"
  PChar = PAnsiChar;
#else
  #define A "A"
#endif

function SetFileAttributes(lpFileName: PChar; dwFileAttributes: DWORD): BOOL; external 'SetFileAttributesA@kernel32.dll stdcall';
//******************************************* [ Папка, в которую устанавливается программа, имеет свою иконку ] ***************************************************//
procedure CreateIni();
begin
SaveStringsToFile(ExpandConstant('{app}\Desktop.ini'), ['[.ShellClassInfo]',
'IconFile=icon.ico',
'IconIndex=0'], False)
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then begin
  SetFileAttributes(PChar(ExpandConstant('{app}\Desktop.ini')), FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM);
end;
end;
//******************************************* [ Папка, в которую устанавливается программа, имеет свою иконку ] ***************************************************//[/SPOILER][/QUOTE]

Ещё раз спасибо,но ты меня не понял:я имею ввиду что надо прописать в коде что бы файл Desktop.ini,который создаётся инсталлятором был скрытым(невидимым).А с остальным всё в порядке - папка появляется уже с моим значком,но вот файл Desktop.ini(как в скачанном по ссылке ,так и в этом коде) - обычный(видимый).
 

vint56

Ветеран
Проверенный
ilzok17 ну я и так скрыл Desktop.ini который создаёт установщик а ты с начало удали старую папку и установи заново
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
ilzok17, через секцию [Files] копируй этот готовый уже Desktop.ini с атрибутом hidden system и не морочь себе голову.
Вот у тебя при создании ini файла ничего не меняется, так что не вижу проблему сделать как я написал.
Код:
procedure CreateIni();
begin
SaveStringsToFile(ExpandConstant('{app}\Desktop.ini'), ['[.ShellClassInfo]',
'IconFile=icon.ico',
'IconIndex=0'], False)
end;
Помню также хотел сделать,что ты хочешь...так вот с помощью SetFileAttributes у меня не получилось.
 

ilzok17

Новичок
ilzok17 покажи скрипт
[Setup]
SourceDir=.
OutputDir=.
AppName=Winaero WEI Tool 1.0
AppVerName=Winaero WEI Tool 1.0
AppVersion=Winaero WEI Tool 1.0
DefaultDirName={pf}\Winaero WEI
DefaultGroupName=Winaero WEI Tool 1.0
AllowNoIcons=yes
OutputBaseFilename=WEI
WindowVisible=no
WindowShowCaption=no
WindowResizable=no
Compression=lzma/normal

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

[Files]
Source: icon.ico; DestDir: {app}
Source: "D:\3\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs sortfilesbyextension

[Dirs]
Name: "{app}"; Attribs: system; AfterInstall: CreateIni();

[Icons]
Name: "{group}\{cm:UninstallProgram,Winaero WEI Tool 1.0}"; Filename: "{uninstallexe}"

[UninstallDelete]
Type: filesandordirs; Name: "{app}"

Код:
type
#ifdef UNICODE
#define A "W"
PChar = PAnsiChar;
#else
#define A "A"
#endif

function SetFileAttributes(lpFileName: PChar; dwFileAttributes: DWORD): BOOL; external 'SetFileAttributesA@kernel32.dll stdcall';
//******************************************* [ Папка, в которую устанавливается программа, имеет свою иконку ] ************************************************** *//
procedure CreateIni();
begin
SaveStringsToFile(ExpandConstant('{app}\Desktop.ini'), ['[.ShellClassInfo]',
'IconFile=icon.ico',
'IconIndex=0'], False)
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then begin
SetFileAttributes(PChar(ExpandConstant('{app}\Desk top.ini')), FILE_ATTRIBUTE_HIDDEN or FILE_ATTRIBUTE_SYSTEM);
end;
end;
//******************************************* [ Папка, в которую устанавливается программа, имеет свою иконку ] ************************************************** *//
 

ilzok17

Новичок
vint56 ,всё спасибо нашёл ошибку,там в одном месте лишний пробел был,сейчас всё отлично.Ещё раз спасибо.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху