Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/09/2024 in all areas

  1. Use COM methods and properties via the COM Automation objects support. So I translate a Delphi script to Inno Setup section.And it work! Here is a part of script in [code] section: [code] http://www.jrsoftware.org) There are someway to pin taskbar depend on one's choice. We can add a [task] section in InnoSetup. if one do not want to see the "task selected page"(like me ), the second way is to create a new CheckBox in Inno [code] section. And in the second way one need to control the CheckBox show or hide inprocedure CurPageChanged(). then call the function like: zylPinAppToTaskbar('c:\window', 'notepad.exe'); An example project for Unicode Inno Setup is provided as download. The attachment "pintaskbar.zip" is the script. Unzip the file pintaskbar.zip,you can get two files named "PinShortcutOntoTaskbar-task.iss" and "PinShortcutOntoTaskbar-checkbox.iss". Please copy the *.iss files to the directory: ./Inno Setup 5/Examples Then build the program and run PinTaskbar.exe. References http://blog.csdn.net/ccrun/article/details/6906471 http://gallery.technet.microsoft.com/ScriptCenter/b66434f1-4b3f-4a94-8dc3-e406eb30b750/ http://www.codeproject.com/Tips/713824/Pin-a-shortcut-onto-the-Taskbar-or-Start-Menu The following is the script of the second way, I think you can modify it to the first way. If the attachment was broken, copy the following script to a *.iss file. ; -- PinShortcutOntoTaskbar.iss -- ; Pin a shortcut onto taskbar on Win7 & Win8. ; @author: Yaliang.Zhao <shuangxiang2008@google.com> ; @brief: I test is on 32-bit Win7 & Win8, but ; I thins it will work on X64 version. [setup] AppName=PinTaskbar AppVersion=1.0 OutputBaseFilename=PinTaskbar DefaultDirName={pf}\PinTaskbar OutputDir=./ DisableStartupPrompt=yes DisableReadyPage=yes [Files] Source: "MyProg.exe"; DestDir: "{app}" ;[Tasks] ;Name: pintaskbar; Description: "Pin shortcut onto taskbar" ;Following is how to use [Code] var PinTaskBarCheck : TNewCheckBox; //the function is work well on Unicode Inno Setup, //if Non Unicode Inno Setup, one need to modify, //and I think you can do it! //Inno use Win32 API function LoadLibrary(lpFilename : String) : LongInt; external 'LoadLibraryW@kernel32.dll stdcall delayload'; //if Non Unicode Inno Setup, use LoadLibraryA function FreeLibrary(hModule : LongInt) : BOOL; external 'FreeLibrary@kernel32.dll stdcall delayload'; function LoadString(hInstance:LongInt; uId:UINT; lpBuffer:String; nBufferMax:Integer) : Integer; external 'LoadStringW@user32.dll stdcall delayload'; //if Non Unicode Inno Setup, use LoadStringA //here is the function //@param strPath The App's directory, //@param strApp The App's name //@example zylPinAppToTaskbar('c:\window', 'notepad.exe'); procedure zylPinAppToTaskbar(strPath, strApp: string); var vShell, vFolder, vFolderItem, vItemVerbs: Variant; vPath, vApp: Variant; i: Integer; sItem: String; h: LongInt; szPinName: String; filenameEnd : Integer; filename : String; strEnd : String; begin SetLength(szPinName, 255); h := LoadLibrary(ExpandConstant('{sys}\Shell32.dll')); LoadString(h, 5386, szPinName, 255); FreeLibrary(h); strEnd := #0; filenameEnd := Pos(strEnd, szPinName); filename := Copy(szPinName, 1, filenameEnd - 1); if (Length(filename) > 0) then //WinXp or lower, no pin taskbar function begin vShell := CreateOleObject('Shell.Application'); vPath := strPath; vFolder := vShell.NameSpace(vPath); vApp := strApp; vFolderItem := vFolder.ParseName(vApp); vItemVerbs := vFolderItem.Verbs; for i := 1 to vItemVerbs.Count do begin sItem := vItemVerbs.Item(i).Name; if (sItem = filename) then begin // 63 63 72 75 6E 2E 63 6F 6D vItemVerbs.Item(i).DoIt; break; end; end; end; end; //You can use zylPinAppToTaskbar like this procedure CurPageChanged(CurPageID: Integer); begin //When Finished page is shown, call the function //You can also call is when the "Finish" button clicked. if CurPageID <> wpWelcome then PinTaskBarCheck.hide else begin PinTaskBarCheck.show; end; if CurPageID = wpFinished then begin //if IsTaskSelected('pintaskbar') then //if Selected the [task] // zylPinAppToTaskbar(ExpandConstant('{app}'), 'MyProg.exe'); if PinTaskBarCheck.Checked then zylPinAppToTaskbar(ExpandConstant('{app}'), 'MyProg.exe'); end; end; procedure InitializeWizard; begin PinTaskBarCheck := TNewCheckBox.Create(WizardForm); with PinTaskBarCheck do begin Parent := WizardForm; Caption := 'Pin it onto taskbar'; Top := 200; Left := 200; Width := ScaleY(200); Height := ScaleY(15); State := cbChecked; //Hide; end; end; pintaskbar.zip
    1 point
  2. It is a very good change. Regards... ;-)
    1 point
  3. If I'm not mistaken: [Code]varPinTaskBarCheck : TNewCheckBox;//the function is work well on Unicode Inno Setup, //if Non Unicode Inno Setup, one need to modify,//and I think you can do it!//Inno use Win32 APIfunction LoadLibrary(lpFilename : String) : LongInt;external 'LoadLibraryW@kernel32.dll stdcall delayload'; //if Non Unicode Inno Setup, use LoadLibraryAfunction FreeLibrary(hModule : LongInt) : BOOL;external 'FreeLibrary@kernel32.dll stdcall delayload';function LoadString(hInstance:LongInt; uId:UINT; lpBuffer:String; nBufferMax:Integer) : Integer;external 'LoadStringW@user32.dll stdcall delayload'; //if Non Unicode Inno Setup, use LoadStringA//here is the function//@param strPath The App's directory,//@param strApp The App's name//@example zylPinAppToTaskbar('c:\window', 'notepad.exe');procedure zylPinAppToTaskbar(strPath, strApp: string); var vShell, vFolder, vFolderItem, vItemVerbs: Variant; vPath, vApp: Variant; i: Integer; sItem: String; h: LongInt; szPinName: String; filenameEnd : Integer; filename : String; strEnd : String;begin SetLength(szPinName, 255); h := LoadLibrary(ExpandConstant('{sys}\Shell32.dll')); LoadString(h, 5386, szPinName, 255); FreeLibrary(h); strEnd := #0; filenameEnd := Pos(strEnd, szPinName); filename := Copy(szPinName, 1, filenameEnd - 1); if (Length(filename) > 0) then //WinXp or lower, no pin taskbar function begin vShell := CreateOleObject('Shell.Application'); vPath := strPath; vFolder := vShell.NameSpace(vPath); vApp := strApp; vFolderItem := vFolder.ParseName(vApp); vItemVerbs := vFolderItem.Verbs; for i := 1 to vItemVerbs.Count do begin sItem := vItemVerbs.Item(i).Name; if (sItem = filename) then begin // 63 63 72 75 6E 2E 63 6F 6D vItemVerbs.Item(i).DoIt; break; end; end; end;end; //You can use zylPinAppToTaskbar like thisprocedure CurPageChanged(CurPageID: Integer);begin //When Finished page is shown, call the function //You can also call is when the "Finish" button clicked. if CurPageID = wpFinished then begin if IsTaskSelected('pintaskbar') then zylPinAppToTaskbar(ExpandConstant('{sys}'), 'magnify.exe'); end;end;zylPinAppToTaskbar(ExpandConstant('{sys}'), 'magnify.exe'); Regards... ;-)
    1 point
  4. Hi... to help you better, what is the program, which you want make installer...? Regards... ;-)
    1 point
  5. remove the shortcuts form taskbar, I think it need to delete the shorcuts form the special directory. C:\Users\Current User\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar. (The directory is hide.) Thanks again...!!! Regards... ;-) How you delete shortcut at uninstall...? deleting the link...? Regards... ;-) Maybe U can see the [uninstallDelete] section in InnoSetup documentation. I am trying to find a way in section.but not finished.In theory, pin or unpin is the same way.
    1 point
  6. Already has, I added it to my AIDA64 installer and its working perfectly (even removes it on uninstall)
    1 point
  7. THIS IS AWESOME!!! Works like a charm
    1 point
×
×
  • Create New...