Старожил
Сообщения: 292
Благодарности: 90
|
Профиль
|
Отправить PM
| Цитировать
Как к скрипту ''Закрепить ярлык на панели задач'' прикрутить чекбокс находящийся на костомной странице.
То-есть чтобы ярлык закреплялся только при выборе чекбокса на вновь созданной странице.
Скрипт
Цитата:
#define MyAppName "My Program"
#define MyAppVersion "1.5"
#define MyAppExeName "MyProg.exe"
[Setup]
AppId={{C50EFAA0-C80A-431E-8698-784F527C6AC4}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName={pf}\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Tasks]
// Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "Дополнительные значки"; Flags: unchecked
// Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked;
// Name: "pin"; Description: "Закрепить ярлык на панели задач"; GroupDescription: "Дополнительные значки"; Flags: unchecked
[Files]
Source: "C:\Program Files (x86)\Inno Setup v.5.5.1\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}";
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\{#MyAppName}"; Filename: "{app}\MyProg.exe"; Check: PinIconCheck;
[ISFormDesigner]
WizardForm=FF0A005457495A415244464F524D003010F204000054504630F10B5457697A617264466F726D0A57697A61726 4466F726D0C436C69656E744865696768740368010B436C69656E74576964746803F1010C4578706C696369744C656674020 00B4578706C69636974546F7002000D4578706C6963697457696474680301020E4578706C69636974486569676874038E010 D506978656C73506572496E636802600A54657874486569676874020D00F10C544E65774E6F7465626F6F6B0D4F757465724 E6F7465626F6F6B00F110544E65774E6F7465626F6F6B506167650B57656C636F6D6550616765084E65787450616765070D4 36F6D706F6E656E74506167650D4578706C69636974576964746803F1010E4578706C696369744865696768740339010000F 110544E65774E6F7465626F6F6B5061676509496E6E6572506167650D4578706C69636974576964746803F1010E4578706C6 963697448656967687403390100F10C544E65774E6F7465626F6F6B0D496E6E65724E6F7465626F6F6B00F110544E65774E6 F7465626F6F6B506167650B4C6963656E7365506167650C50726576696F757350616765070D436F6D706F6E656E745061676 50D4578706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6 F6B506167650D53656C656374446972506167650D4578706C69636974576964746803A1010E4578706C69636974486569676 87403ED000000F110544E65774E6F7465626F6F6B506167651653656C65637450726F6772616D47726F7570506167650D457 8706C69636974576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506 167650F53656C6563745461736B7350616765084E65787450616765070C44697247726F7570506167650D4578706C6963697 4576964746803A1010E4578706C6963697448656967687403ED000000F110544E65774E6F7465626F6F6B506167650952656 16479506167650C50726576696F757350616765070C44697247726F7570506167650D4578706C69636974576964746803A10 10E4578706C6963697448656967687403ED00000010544E65774E6F7465626F6F6B506167650D436F6D706F6E656E7450616 7650743617074696F6E1426000000D092D18BD0B1D0BED18020D182D0B8D0BFD0B020D183D181D182D0B0D0BDD0BED0B2D0B AD0B80B4465736372697074696F6E06032E2E2E0C50726576696F757350616765070B57656C636F6D6550616765084E65787 450616765070B4C6963656E736550616765000C544E6577436865636B426F780350696E044C656674020003546F70025A055 76964746803C3000648656967687402110743617074696F6E143A000000D097D0B0D0BAD180D0B5D0BFD0B8D182D18C20D18 FD180D0BBD18BD0BA20D0BDD0B020D0BFD0B0D0BDD0B5D0BBD0B820D0B7D0B0D0BBD0B0D187085461624F726465720200000 00010544E65774E6F7465626F6F6B506167650C44697247726F7570506167650743617074696F6E144B000000D092D18BD0B 1D0BED18020D0BFD0B0D0BFD0BAD0B820D183D181D182D0B0D0BDD0BED0B2D0BAD0B820D0B820D0BFD0B0D0BFD0BAD0B820D 0B220D0BCD0B5D0BDD18E20D09FD183D181D0BA0B4465736372697074696F6E06032E2E2E0C50726576696F7573506167650 70F53656C6563745461736B7350616765084E657874506167650709526561647950616765000000000000
[code]
var
ComponentPage: TWizardPage;
PinIcon: TNewCheckBox;
function PinIconCheck: Boolean;
begin
Result:=PinIcon.Checked;
end;
const
LOAD_LIBRARY_AS_DATAFILE = $2;
#define A = (Defined UNICODE) ? "W" : "A"
function LoadLibraryEx(lpFileName: String; hFile: THandle; dwFlags: DWORD): THandle; external 'LoadLibraryEx{#A}@kernel32.dll stdcall';
function LoadString(hInstance: THandle; uID: SmallInt; var lpBuffer: Char; nBufferMax: Integer): Integer; external 'LoadString{#A}@user32.dll stdcall';
function SHGetNewLinkInfo(pszLinkTo, pszDir: String; var pszName: Char; var pfMustCopy: Longint; uFlags: UINT): BOOL; external 'SHGetNewLinkInfo{#A}@shell32.dll stdcall';
function PinToTaskbar(const szFilename: String; IsPin: Boolean): Boolean;
var
hInst: THandle;
buf: array [0..255] of Char;
i, res: Integer;
strLnk, strVerb: String;
objShell, colVerbs: Variant;
begin
Result := False;
if (GetWindowsVersion < $06010000) or not FileExists(szFilename) then Exit; { below Windows 7 }
{ String resources }
if IsPin then
begin
if SHGetNewLinkInfo(szFilename, ExpandConstant('{tmp}'), buf[0], res, 0) then
begin
while buf[Length(strLnk)] <> #0 do Insert(buf[Length(strLnk)], strLnk, Length(strLnk)+1);
if FileExists(ExpandConstant('{userappdata}\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\') + ExtractFileName(strLnk)) then Exit;
end;
res := 5386; { Pin to Tas&kbar } { Закрепить на Taskbar }
end else
res := 5387; { Unpin from Tas&kbar } { Открепить от Taskbar }
{ Load string resource }
hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE);
if hInst <> 0 then
try
for i := 0 to LoadString(hInst, res, buf[0], 255)-1 do Insert(buf[i], strVerb, i+1);
try
objShell := CreateOleObject('Shell.Application');
colVerbs := objShell.Namespace(ExtractFileDir(szFilename)).ParseName(ExtractFileName(szFilename)).Verbs;
for i := 1 to colVerbs.Count do if CompareText(colVerbs.Item[i].Name, strVerb) = 0 then
begin
colVerbs.Item[i].DoIt;
Result := True;
Break;
end;
except
Exit;
end;
finally
FreeDLL(hInst);
end;
end;
procedure CurPageChanged(CurPageID: integer);
begin
case CurPageID of
wpFinished: begin
if IsTaskSelected('Pin') then PinToTaskbar(ExpandConstant('{app}\MyProg.exe'), True);
end;
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
instPath: string;
begin
case CurUninstallStep of
usUninstall: begin
PinToTaskbar(ExpandConstant('{app}\MyProg.exe'), False);
end;
end;
end;
procedure InitializeWizard();
begin
ComponentPage := CreateCustomPage(wpWelcome, 'Выбор типа установки', '...');
WizardForm.SelectTasksLabel.Hide;
{ Pin }
PinIcon := TNewCheckBox.Create(WizardForm);
with PinIcon do
begin
Parent := ComponentPage.Surface;
Left := ScaleX(0);
Top := ScaleY(90);
Width := ScaleX(195);
Height := ScaleY(17);
Caption := 'Закрепить ярлык на панели задач';
end;
end;
|
|
-------
Inno Setup 5.5.1.ee2 Ultra ANSI Unicode
Отправлено: 11:33, 05-04-2016
| #1479
|