#define ExeName "MyProg.exe" ;Exe файл который нужно закрепить [Setup] AppName=My Application AppVersion=1.5 DefaultDirName={pf}\My Application [Tasks] Name: PinToTaskBar; Description: {cm:cTaskBarTxt}; MinVersion: 0,6.0; Name: PinToSrartMenu; Description: {cm:cStartMenuTxt}; MinVersion: 0,6.0; [Languages] Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" Name: "en"; MessagesFile: "compiler:Languages\English.isl" [CustomMessages] ru.cTaskBarTxt=Закрепить на панели задач ru.cStartMenuTxt=Закрепить в меню "Пуск" en.cTaskBarTxt=Pin to Taskbar en.cStartMenuTxt=Pin to Start Menu rucStartMenuTxt=Закрепить в меню "Пуск" rucTaskBarTxt=Закрепить на панели задач rucTaskBarTxt2=Закрепить программу в панели задач encStartMenuTxt=Pin to Start Menu encTaskBarTxt=Pin to Taskbar ruUNcStartMenuTxt=Изъять из меню "Пуск" ruUNcTaskBarTxt=Открепить от панели задач ruUNcTaskBarTxt2=Изъять программу из панели задач enUNcStartMenuTxt=Unpin from Start Menu enUNcTaskBarTxt=Unpin from Taskbar [Code] procedure Win7PinProg(inFilePath: string; inFileName: String; PinProgOn: integer; UnPIN: boolean); var oShell: variant; objFolder: variant; objFolderItem: variant; colVerbs: variant; VerbName, cStartMenuTxt, cTaskBarTxt, cTaskBarTxt2, sLang: string; i : integer; begin oShell := CreateOleObject('Shell.Application'); objFolder := oShell.Namespace(inFilePath); objFolderItem := objFolder.ParseName(inFileName); colVerbs := objFolderItem.Verbs(); for i := 0 to colVerbs.Count() do begin VerbName := Lowercase(colVerbs.Item(i).Name); StringChangeEx(VerbName, '&', '', True); if GetUILanguage = $0419 then sLang := 'ru' else sLang := 'en'; if UnPIN then begin cStartMenuTxt := ExpandConstant('{cm:' + sLang + 'UNcStartMenuTxt}'); cTaskBarTxt := ExpandConstant('{cm:' + sLang + 'UNcTaskBarTxt}'); cTaskBarTxt2 := ExpandConstant('{cm:' + sLang + 'UNcTaskBarTxt2}'); end else begin cStartMenuTxt := ExpandConstant('{cm:' + sLang + 'cStartMenuTxt}'); cTaskBarTxt := ExpandConstant('{cm:' + sLang + 'cTaskBarTxt}'); cTaskBarTxt2 := ExpandConstant('{cm:' + sLang + 'cTaskBarTxt2}'); end; if (VerbName = cStartMenuTxt) and (PinProgOn = 1) then colVerbs.Item(i).DoIt; if ((VerbName = cTaskBarTxt) or (VerbName = cTaskBarTxt2)) and (PinProgOn = 2) then colVerbs.Item(i).DoIt; end; end; procedure CurPageChanged(CurPageID: integer); begin case CurPageID of wpFinished: begin if WizardForm.TasksList.Checked[0] then Win7PinProg(WizardDirValue, '{#ExeName}', 2, false); if WizardForm.TasksList.Checked[1] then Win7PinProg(WizardDirValue, '{#ExeName}', 1, false); end; end; end; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); var instPath: string; begin if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#SetupSetting("AppName")}_is1', 'InstallLocation', instPath) then begin case CurUninstallStep of usUninstall: begin Win7PinProg(instPath, '{#ExeName}', 2, true); Win7PinProg(instPath, '{#ExeName}', 1, true); end; end; end; end; |