Solves icons problems for x86 architectures

This commit is contained in:
2012-09-06 19:10:06 +02:00
parent 01dad9d6f2
commit 5aa522f920

View File

@@ -1,3 +1,78 @@
/******************************************************************************
WORKAROUND - FixShortcut
This snippet was developed to address an issue with Windows
x64 incorectly redirecting the shortcuts icon from $PROGRAMFILES32
to $PROGRAMFILES64.
See Forum post: http://forums.winamp.com/newreply.php?do=postreply&t=327806
Example:
CreateShortcut "$SMPROGRAMS\My App\My App.lnk" "$INSTDIR\My App.exe" "" "$INSTDIR\My App.exe"
${lnkX64IconFix} "$SMPROGRAMS\My App\My App.lnk"
Original Code by Anders - http://forums.winamp.com/member.php?u=70852
******************************************************************************/
!ifndef ___lnkX64IconFix___
!verbose push
!verbose 0
!include "LogicLib.nsh"
!include "x64.nsh"
!define ___lnkX64IconFix___
!define lnkX64IconFix `!insertmacro _lnkX64IconFix`
!macro _lnkX64IconFix _lnkPath
!verbose push
!verbose 0
${If} ${RunningX64}
DetailPrint "WORKAROUND: 64bit OS Detected, Attempting to apply lnkX64IconFix"
Push "${_lnkPath}"
Call lnkX64IconFix
${EndIf}
!verbose pop
!macroend
Function lnkX64IconFix ; _lnkPath
Exch $5
Push $0
Push $1
Push $2
Push $3
Push $4
System::Call 'OLE32::CoCreateInstance(g "{00021401-0000-0000-c000-000000000046}",i 0,i 1,g "{000214ee-0000-0000-c000-000000000046}",*i.r1)i'
${If} $1 <> 0
System::Call '$1->0(g "{0000010b-0000-0000-C000-000000000046}",*i.r2)'
${If} $2 <> 0
System::Call '$2->5(w r5,i 2)i.r0'
${If} $0 = 0
System::Call '$1->0(g "{45e2b4ae-b1c3-11d0-b92f-00a0c90312e1}",*i.r3)i.r0'
${If} $3 <> 0
System::Call '$3->5(i 0xA0000007)i.r0'
System::Call '$3->6(*i.r4)i.r0'
${If} $0 = 0
IntOp $4 $4 & 0xffffBFFF
System::Call '$3->7(ir4)i.r0'
${If} $0 = 0
System::Call '$2->6(i0,i0)'
DetailPrint "WORKAROUND: lnkX64IconFix Applied successfully"
${EndIf}
${EndIf}
System::Call $3->2()
${EndIf}
${EndIf}
System::Call $2->2()
${EndIf}
System::Call $1->2()
${EndIf}
Pop $4
Pop $3
Pop $2
Pop $1
Pop $0
FunctionEnd
!verbose pop
!endif
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
@@ -45,7 +120,7 @@
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "dist\Ivolution_${PRODUCT_VERSION}.exe"
InstallDir "$PROGRAMFILES\Ivolution"
InstallDir "$PROGRAMFILES32\Ivolution"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
@@ -61,7 +136,10 @@ Section "IvolutionSection" SEC01
File "dist\Ivolutioner.exe"
CreateDirectory "$SMPROGRAMS\Ivolution"
CreateShortCut "$SMPROGRAMS\Ivolution\Ivolution.lnk" "$INSTDIR\Ivolutioner.exe" "" "$INSTDIR\data\media\vitruve.ico"
${lnkX64IconFix} "$SMPROGRAMS\Ivolution\Ivolution.lnk"
CreateShortCut "$DESKTOP\Ivolution.lnk" "$INSTDIR\Ivolutioner.exe" "" "$INSTDIR\data\media\vitruve.ico"
${lnkX64IconFix} "$DESKTOP\Ivolution.lnk"
SetOutPath "$INSTDIR\data\haarcascades"
SetOverwrite try
File "dist\data\haarcascades\haarcascade_eye.xml"
@@ -1130,15 +1208,16 @@ Section -AdditionalIcons
SetOutPath $INSTDIR
WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
CreateShortCut "$SMPROGRAMS\Ivolution\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" "" "$INSTDIR\data\media\vitruve.ico"
${lnkX64IconFix} "$SMPROGRAMS\Ivolution\Website.lnk"
CreateShortCut "$SMPROGRAMS\Ivolution\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\w9xpopen.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Ivolutioner.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\w9xpopen.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Ivolutioner.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
@@ -2170,7 +2249,8 @@ Section Uninstall
Delete "$SMPROGRAMS\Ivolution\Website.lnk"
Delete "$SMPROGRAMS\Ivolution\Ivolution.lnk"
Delete "$DESKTOP\Ivolution.lnk"
RMDir "$SMPROGRAMS\Ivolution"
RMDir /r "$APPDATA\Ivolution"
RMDir /r "$SMPROGRAMS\Ivolution"
RMDir "$SMPROGRAMS\Ivolution"
RMDir "$INSTDIR\tcl\tk8.5\ttk"