Цитата A1EXXX:
создавать файл каждый раз вручную надоедает »
|
Ну, можно положить в установочный пакет готовый "desktop.ini",
насколько мне извесно, винде не важно точное расположение иконки в папке
(
Serega, думаю меня поправит, или опровергнет), посему его можно заполнить сразу, и добавить в пакет установки.
Код:

[.ShellClassInfo]
IconResource=MyProg.exe
IconIndex=0
и использовать такой код:
читать дальше »
Код:

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=userdocs:My Program.
[Dirs]
Name: "{app}"; Attribs: "readonly";
[Files]
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion;
Source: "desktop.ini"; Attribs: "system hidden"; DestDir: "{app}"; Flags: ignoreversion;
Или вариант без таскания за собой готового desktop.ini, создать его во время установки:
читать дальше »
Код:

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
OutputDir=userdocs:My Program.
[Files]
Source: "compiler:Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion;
[code]
procedure CurStepChanged(CurStep: TSetupStep);
var
ErrorCode: Integer;
begin
if CurStep = ssPostInstall then
begin
SetIniString('.ShellClassInfo', 'IconResource',
ExpandConstant('{app}\MyProg.exe') + #13#10 'IconIndex=0', ExpandConstant('{app}\desktop.ini'));
Exec('attrib', ' +r ' + '"' + ExpandConstant('{app}') + '"', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
Exec('attrib', ' +h +s ' + '"' + ExpandConstant('{app}\desktop.ini') + '"', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
DeleteFile(ExpandConstant('{app}\desktop.ini'));
end;