
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7109 212acab6-be3b-0410-9dea-997c60f758d6
170 lines
5.4 KiB
NSIS
170 lines
5.4 KiB
NSIS
!ifndef __WIN_PROPKEY__INC
|
|
!define __WIN_PROPKEY__INC
|
|
!verbose push
|
|
!verbose 3
|
|
|
|
|
|
/**************************************************
|
|
WTypes.h
|
|
**************************************************/
|
|
;NOTE: This list is incomplete
|
|
!define VT_EMPTY 0
|
|
!define VT_NULL 1
|
|
!define VT_I2 2
|
|
!define VT_I4 3
|
|
!define VT_BSTR 8
|
|
!define VT_BOOL 11
|
|
!define VT_I1 16
|
|
!define VT_UI1 17
|
|
!define VT_UI2 18
|
|
!define VT_UI4 19
|
|
!define VT_I8 20
|
|
!define VT_UI8 21
|
|
!define VT_INT 22
|
|
!define VT_UINT 23
|
|
!define VT_HRESULT 25
|
|
!define VT_PTR 26
|
|
!define VT_SAFEARRAY 27
|
|
!define VT_LPSTR 30
|
|
!define VT_LPWSTR 31
|
|
!define VT_FILETIME 64
|
|
!define VT_STREAM 66
|
|
!define VT_CLSID 72
|
|
!define VT_TYPEMASK 0xFFF
|
|
!define VT_VECTOR 0x1000
|
|
!define VT_ARRAY 0x2000
|
|
!define VT_BYREF 0x4000
|
|
|
|
!define /ifndef VARIANT_TRUE -1
|
|
!define /ifndef VARIANT_FALSE 0
|
|
|
|
!define SYSSIZEOF_PROPERTYKEY 20
|
|
!define SYSSTRUCT_PROPERTYKEY (&g16,&i4) ;System.dll is buggy when it comes to g and forces us to specify the size
|
|
|
|
!define STGC_DEFAULT 0
|
|
!define STGC_OVERWRITE 1
|
|
!define STGC_ONLYIFCURRENT 2
|
|
!define STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE 4
|
|
!define STGC_CONSOLIDATE 8
|
|
|
|
|
|
/**************************************************
|
|
OAIdl.h
|
|
**************************************************/
|
|
!define /ifndef SYSSIZEOF_VARIANT 16
|
|
!define /ifndef SYSSTRUCT_VARIANT (&i2,&i6,&i8)
|
|
|
|
|
|
/**************************************************
|
|
PropIdl.h
|
|
**************************************************/
|
|
!if "${NSIS_PTR_SIZE}" > 4
|
|
!define SYSSIZEOF_PROPVARIANT 24
|
|
!define SYSSTRUCT_PROPVARIANT (&i2,&i6,&i8,&i8)
|
|
!else
|
|
!define SYSSIZEOF_PROPVARIANT 16
|
|
!define SYSSTRUCT_PROPVARIANT (&i2,&i6,&i8)
|
|
!endif
|
|
|
|
!define PRSPEC_LPWSTR 0
|
|
!define PRSPEC_PROPID 1
|
|
!define SYSSTRUCT_PROPSPEC (p,p)
|
|
|
|
|
|
/**************************************************
|
|
Propkey.h
|
|
**************************************************/
|
|
!define PKEY_AppUserModel_ID '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",5'
|
|
!define PKEY_AppUserModel_ExcludeFromShowInNewInstall '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",8' ; VT_BOOL
|
|
!define PKEY_AppUserModel_PreventPinning '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",9' ; VT_BOOL
|
|
!define APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL 1
|
|
!define APPUSERMODEL_STARTPINOPTION_USERPINNED 2
|
|
!define PKEY_AppUserModel_StartPinOption '"{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}",12' ; VT_UI4 [Eight+]
|
|
|
|
|
|
/**************************************************
|
|
ShlGuid.h & ShlObj.h
|
|
**************************************************/
|
|
!define FMTID_Intshcut {000214A0-0000-0000-C000-000000000046}
|
|
!define PID_IS_URL 2 ; VT_LPWSTR
|
|
!define PID_IS_HOTKEY 6 ; VT_UI2
|
|
!define PID_IS_ICONINDEX 8 ; VT_I4
|
|
!define PID_IS_ICONFILE 9 ; VT_LPWSTR
|
|
!define PKEY_Intshcut_Url '"${FMTID_Intshcut}",${PID_IS_URL}' ; Undocumented
|
|
!define FMTID_InternetSite {000214A1-0000-0000-C000-000000000046}
|
|
!define PID_INTSITE_LASTVISIT 4 ; VT_FILETIME
|
|
!define PID_INTSITE_VISITCOUNT 6 ; VT_UI4
|
|
|
|
|
|
/**************************************************
|
|
Helper macros
|
|
**************************************************/
|
|
!define V_GetVT '!insertmacro V_GetVT '
|
|
!macro V_GetVT pPV sysdst
|
|
System::Call '*${pPV}(&i2.${sysdst})'
|
|
!macroend
|
|
!define V_SetVT '!insertmacro V_SetVT '
|
|
!macro V_SetVT pPV syssrc
|
|
System::Call '*${pPV}(&i2 ${syssrc})'
|
|
!macroend
|
|
!macro V_GetHelper sysvaltyp pPV sysdst
|
|
System::Call '*${pPV}(l,${sysvaltyp}.${sysdst})'
|
|
!macroend
|
|
!macro V_GenericSetHelper sysvaltyp pPV VT syssrc
|
|
!if "${VT}" != "" ; Setting the VT is optional
|
|
System::Call '*${pPV}(&i2 ${VT},&i6,${sysvaltyp}${syssrc})'
|
|
!else
|
|
System::Call '*${pPV}(l,${sysvaltyp}${syssrc})'
|
|
!endif
|
|
!macroend
|
|
!macro V_SpecificSetHelper VT sysvaltyp pPV syssrc
|
|
System::Call '*${pPV}(&i2 ${VT},&i6,${sysvaltyp}${syssrc})'
|
|
!macroend
|
|
!macro Make_V_GetterSetter name sysvaltyp setsep
|
|
!define V_Get${name} '!insertmacro V_GetHelper "${sysvaltyp}" '
|
|
!ifdef VT_${name}
|
|
!define V_Set${name} '!insertmacro V_SpecificSetHelper ${VT_${name}} "${sysvaltyp}${setsep}" '
|
|
!else
|
|
!define V_Set${name} '!insertmacro V_GenericSetHelper "${sysvaltyp}${setsep}" '
|
|
!endif
|
|
!macroend
|
|
!insertmacro Make_V_GetterSetter Int8 "&i1" " " ; Generic
|
|
!insertmacro Make_V_GetterSetter Int16 "&i2" " " ; Generic
|
|
!insertmacro Make_V_GetterSetter Int32 "i" "" ; Generic
|
|
!insertmacro Make_V_GetterSetter Int64 "l" "" ; Generic
|
|
!insertmacro Make_V_GetterSetter Pointer "p" "" ; Generic
|
|
!insertmacro Make_V_GetterSetter I4 "i" " "
|
|
!insertmacro Make_V_GetterSetter BOOL "&i2" " "
|
|
!insertmacro Make_V_GetterSetter FILETIME "l" ""
|
|
|
|
!macro VariantInit pV
|
|
${V_SetVT} ${pV} ${VT_EMPTY}
|
|
!macroend
|
|
!macro VariantClear pV
|
|
System::Call 'OLEAUT32::#9(p${pV})'
|
|
!macroend
|
|
!macro VariantCopy pDstV pSrcV sysretHR
|
|
System::Call 'OLEAUT32::#10(p${pDstV},p${pSrcV})i.${sysretHR}'
|
|
!macroend
|
|
!macro VariantChangeType pDstV pSrcV Flags VT sysretHR
|
|
System::Call 'OLEAUT32::#12(p${pDstV},p${pSrcV},i${Flags},i${VT})i.${sysretHR}'
|
|
!macroend
|
|
!macro PropVariantClear pPV
|
|
System::Call 'OLE32::PropVariantClear(p${pV})' ; Win95+, WinNT4.SP2+
|
|
!macroend
|
|
|
|
!macro IPropertyStorage_ReadPropById pPS ID pPV sysoutHR
|
|
System::Call '*(p${PRSPEC_PROPID},p${ID})p.s'
|
|
${IPropertyStorage::ReadMultiple} ${pPS} '(1,pss,p${pPV})${sysoutHR}'
|
|
System::Free
|
|
!macroend
|
|
|
|
!macro IPropertyStorage_WritePropById pPS ID pPV sysoutHR
|
|
System::Call '*(p${PRSPEC_PROPID},p${ID})p.s'
|
|
${IPropertyStorage::WriteMultiple} ${pPS} '(1,pss,p${pPV},2)${sysoutHR}'
|
|
System::Free
|
|
!macroend
|
|
|
|
|
|
!verbose pop
|
|
!endif /* __WIN_PROPKEY__INC */
|