Jump to content

Creating shortcuts through MS hotfix installer?


Recommended Posts

I'm trying to figure out how to create shortcuts when using MS hotfix installer. Basically speaking, a section called LinkItems.Create is used for it but I'm really unsure how exactly it's structured.

Here are a few examples:

[LinkItems.Create]
%scw_linkname% = 0x0019,,"%SystemRoot%\hh.exe scwhelp.chm",,,,,,"@%SystemRoot%\System32\ws03res.dll,-69501","%SystemRoot%\system32\ws03res.dll",69500

%WDS_MMC_NAME%=0x002f,,%11%\WdsMgmt.msc,"%systemroot%\system32\wdsmmc.dll.mui",-114,,,,"@%systemroot%\system32\wdsmmc.dll.mui,-1892",%systemroot%\system32\wdsmmc.dll.mui,1891

%WDS_RISETUP_NAME%=0x002f,,%11%\risetup.exe,"%systemroot%\system32\risetup.exe.mui",-97,,,,"@%systemroot%\system32\risetup.exe.mui,-220",%systemroot%\system32\risetup.exe.mui,219

%seccentername% = 0x0017,%systemtools%,wscui.cpl,"%SystemRoot%\system32\xpsp2res.dll",-6105,,,,"@%SystemRoot%\system32\xpsp2res.dll,-6104","%SystemRoot%\system32\xpsp2res.dll",6103

%FlashConfigWiz% = 0x0017,%CommunicationsGroup%,"rundll32 shell32.dll,Control_RunDLL NetSetup.cpl,@0,WNSW","%SystemRoot%\system32\xpsp2res.dll",-2026,,,,"@%SystemRoot%\system32\xpsp2res.dll,-16202","%SystemRoot%\system32\xpsp2res.dll",16201

There's no available documentation on this. In the Internet I've found some guidelines like this one about how to create shortcuts through INF files but it's not exactly the same thing. Could anyone with more knowledge on this matter help and explain how such a shortcut structure should look like?

Let's say that I'd like to create a shortcut to "%ProgramFiles%\Skype\Phone\Skype.exe" which is to be located in "%16407%\Skype\" (All Users\Start Menu\Programs\Skype)

Link to comment
Share on other sites

  • 7 months later...

The first argument is a special folder code. Below you can find the special folder codes:

const int CSIDL_DESKTOP = 0x0000; // <desktop>
const int CSIDL_INTERNET = 0x0001; // Internet Explorer (icon on desktop)
const int CSIDL_PROGRAMS = 0x0002; // Start Menu\Programs
const int CSIDL_CONTROLS = 0x0003; // My Computer\Control Panel
const int CSIDL_PRINTERS = 0x0004; // My Computer\Printers
const int CSIDL_PERSONAL = 0x0005; // My Documents
const int CSIDL_FAVORITES = 0x0006; // <user name>\Favorites
const int CSIDL_STARTUP = 0x0007; // Start Menu\Programs\Startup
const int CSIDL_RECENT = 0x0008; // <user name>\Recent
const int CSIDL_SENDTO = 0x0009; // <user name>\SendTo
const int CSIDL_BITBUCKET = 0x000a; // <desktop>\Recycle Bin
const int CSIDL_STARTMENU = 0x000b; // <user name>\Start Menu
const int CSIDL_MYDOCUMENTS = CSIDL_PERSONAL; // Personal was just a silly name for My Documents
const int CSIDL_MYMUSIC = 0x000d; // "My Music" folder
const int CSIDL_MYVIDEO = 0x000e; // "My Videos" folder
const int CSIDL_DESKTOPDIRECTORY = 0x0010; // <user name>\Desktop
const int CSIDL_DRIVES = 0x0011; // My Computer
const int CSIDL_NETWORK = 0x0012; // Network Neighborhood (My Network Places)
const int CSIDL_NETHOOD = 0x0013; // <user name>\nethood
const int CSIDL_FONTS = 0x0014; // windows\fonts
const int CSIDL_TEMPLATES = 0x0015;
const int CSIDL_COMMON_STARTMENU = 0x0016; // All Users\Start Menu
const int CSIDL_COMMON_PROGRAMS = 0x0017; // All Users\Start Menu\Programs
const int CSIDL_COMMON_STARTUP = 0x0018; // All Users\Startup
const int CSIDL_COMMON_DESKTOPDIRECTORY = 0x0019; // All Users\Desktop
const int CSIDL_APPDATA = 0x001a; // <user name>\Application Data
const int CSIDL_PRINTHOOD = 0x001b; // <user name>\PrintHood
const int CSIDL_LOCAL_APPDATA = 0x001c; // <user name>\Local Settings\Applicaiton Data (non roaming)
const int CSIDL_ALTSTARTUP = 0x001d; // non localized startup
const int CSIDL_COMMON_ALTSTARTUP = 0x001e; // non localized common startup
const int CSIDL_COMMON_FAVORITES = 0x001f;
const int CSIDL_INTERNET_CACHE = 0x0020;
const int CSIDL_COOKIES = 0x0021;
const int CSIDL_HISTORY = 0x0022;
const int CSIDL_COMMON_APPDATA = 0x0023; // All Users\Application Data
const int CSIDL_WINDOWS = 0x0024; // GetWindowsDirectory()
const int CSIDL_SYSTEM = 0x0025; // GetSystemDirectory()
const int CSIDL_PROGRAM_FILES = 0x0026; // C:\Program Files
const int CSIDL_MYPICTURES = 0x0027; // C:\Program Files\My Pictures
const int CSIDL_PROFILE = 0x0028; // USERPROFILE
const int CSIDL_SYSTEMX86 = 0x0029; // x86 system directory on RISC
const int CSIDL_PROGRAM_FILESX86 = 0x002a; // x86 C:\Program Files on RISC
const int CSIDL_PROGRAM_FILES_COMMON = 0x002b; // C:\Program Files\Common
const int CSIDL_PROGRAM_FILES_COMMONX86 = 0x002c; // x86 Program Files\Common on RISC
const int CSIDL_COMMON_TEMPLATES = 0x002d; // All Users\Templates
const int CSIDL_COMMON_DOCUMENTS = 0x002e; // All Users\Documents
const int CSIDL_COMMON_ADMINTOOLS = 0x002f; // All Users\Start Menu\Programs\Administrative Tools
const int CSIDL_ADMINTOOLS = 0x0030; // <user name>\Start Menu\Programs\Administrative Tools
const int CSIDL_CONNECTIONS = 0x0031; // Network and Dial-up Connections
const int CSIDL_COMMON_MUSIC = 0x0035; // All Users\My Music
const int CSIDL_COMMON_PICTURES = 0x0036; // All Users\My Pictures
const int CSIDL_COMMON_VIDEO = 0x0037; // All Users\My Video
const int CSIDL_RESOURCES = 0x0038; // Resource Direcotry
const int CSIDL_RESOURCES_LOCALIZED = 0x0039; // Localized Resource Direcotry
const int CSIDL_COMMON_OEM_LINKS = 0x003a; // Links to All Users OEM specific apps
const int CSIDL_CDBURN_AREA = 0x003b; // USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning
const int CSIDL_COMPUTERSNEARME = 0x003d; // Computers Near Me (computered from Workgroup membership)
const int CSIDL_FLAG_CREATE = 0x8000; // combine with CSIDL_ value to force folder creation in SHGetFolderPath()
const int CSIDL_FLAG_DONT_VERIFY = 0x4000; // combine with CSIDL_ value to return an unverified folder path
const int CSIDL_FLAG_DONT_UNEXPAND = 0x2000; // combine with CSIDL_ value to avoid unexpanding environment variables
const int CSIDL_FLAG_NO_ALIAS = 0x1000; // combine with CSIDL_ value to insure non-alias versions of the pidl
const int CSIDL_FLAG_PER_USER_INIT = 0x0800; // combine with CSIDL_ value to indicate per-user init (eg. upgrade)

The second argument is a string with the name of the special folder's subfolder where you will save the link to. Leave this argument blank (put a comma) if you want to save the link in the special folder you specified.

The third argument is the command the shortcut will execute.

The fourth argument specifies a dll file with the shortcut's icon.

The fifth argument species the icon index in the specified dll

The next 3 arguments are unknown.

The 9th argument seems to be the target path of the shortcut.

10th, 11th arguments probably specify the dll with a specified string resource to show in shortcut's description.

Link to comment
Share on other sites

http://blog.livedoor.jp/blackwingcat/archives/1759259.html

You can refer to Skype Installer for Windows 2000. :)

I'm trying to figure out how to create shortcuts when using MS hotfix installer. Basically speaking, a section called LinkItems.Create is used for it but I'm really unsure how exactly it's structured.

Here are a few examples:

[LinkItems.Create]%scw_linkname% = 0x0019,,"%SystemRoot%\hh.exe scwhelp.chm",,,,,,"@%SystemRoot%\System32\ws03res.dll,-69501","%SystemRoot%\system32\ws03res.dll",69500%WDS_MMC_NAME%=0x002f,,%11%\WdsMgmt.msc,"%systemroot%\system32\wdsmmc.dll.mui",-114,,,,"@%systemroot%\system32\wdsmmc.dll.mui,-1892",%systemroot%\system32\wdsmmc.dll.mui,1891%WDS_RISETUP_NAME%=0x002f,,%11%\risetup.exe,"%systemroot%\system32\risetup.exe.mui",-97,,,,"@%systemroot%\system32\risetup.exe.mui,-220",%systemroot%\system32\risetup.exe.mui,219%seccentername% =  0x0017,%systemtools%,wscui.cpl,"%SystemRoot%\system32\xpsp2res.dll",-6105,,,,"@%SystemRoot%\system32\xpsp2res.dll,-6104","%SystemRoot%\system32\xpsp2res.dll",6103%FlashConfigWiz% = 0x0017,%CommunicationsGroup%,"rundll32 shell32.dll,Control_RunDLL NetSetup.cpl,@0,WNSW","%SystemRoot%\system32\xpsp2res.dll",-2026,,,,"@%SystemRoot%\system32\xpsp2res.dll,-16202","%SystemRoot%\system32\xpsp2res.dll",16201
There's no available documentation on this. In the Internet I've found some guidelines like this one about how to create shortcuts through INF files but it's not exactly the same thing. Could anyone with more knowledge on this matter help and explain how such a shortcut structure should look like?

Let's say that I'd like to create a shortcut to "%ProgramFiles%\Skype\Phone\Skype.exe" which is to be located in "%16407%\Skype\" (All Users\Start Menu\Programs\Skype)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...