GraphicsMagick: Fix graphics magick installer for Windows.

GraphicsMagick Commits <[email protected]>
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.39367.1672896325.1459.graphicsmagick-commit@lists.sourceforge.net>
changeset a51272db0457 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=a51272db0457
summary: Fix graphics magick installer for Windows.

diffstat:

 ChangeLog                                        |   9 ++
 VisualMagick/installer/inc/body.isx              |  88 ++++++++++++++++++++++++
 VisualMagick/installer/inc/files-dlls.isx        |  10 +-
 VisualMagick/installer/redist/VC2008SP1/note.txt |   8 ++
 4 files changed, 111 insertions(+), 4 deletions(-)

diffs (163 lines):

diff -r 8a2f008e12a9 -r a51272db0457 ChangeLog
--- a/ChangeLog	Wed Jan 04 06:24:22 2023 +0100
+++ b/ChangeLog	Thu Jan 05 06:22:44 2023 +0100
@@ -1,3 +1,12 @@
+2023-01-05 Fojtik Jaroslav  <[email protected]>
+
+	* VisualMagick/installer/inc/body.isx
+	* VisualMagick/installer/inc/files-dlls.isx
+	( VisualMagick/installer/redist/VC2008SP1/vcredist_x64.exe must be downloaded from www)
+	( VisualMagick/installer/redist/VC2008SP1/vcredist_x86.exe must be downloaded from www) 
+	Fix graphics magick installer for Windows.
+
+
 2023-01-04 Fojtik Jaroslav  <[email protected]>
 
 	* VisualMagick/tests/runtest.bat Added new tests for PGX (jp2), MAT,
diff -r 8a2f008e12a9 -r a51272db0457 VisualMagick/installer/inc/body.isx
--- a/VisualMagick/installer/inc/body.isx	Wed Jan 04 06:24:22 2023 +0100
+++ b/VisualMagick/installer/inc/body.isx	Thu Jan 05 06:22:44 2023 +0100
@@ -81,6 +81,15 @@
 #include "icons-associate.isx"
 
 [Run]
+
+; conditional installation Check for Visual Studio Redistributable
+#ifdef WIN64
+  Filename: "{tmp}\vcredist_x64.exe"; Check: VCRedistNeedsInstall
+#else
+  Filename: "{tmp}\vcredist_x86.exe"; Check: VCRedistNeedsInstall
+#endif
+
+
 #include "run-pathtool.isx"
 
 #ifdef MagickDynamicPackage
@@ -102,3 +111,82 @@
 #ifdef MSVCProprietary
   #include "uninstallrun-unregister-com.isx"
 #endif
+
+
+[Code]
+
+#IFDEF UNICODE
+  #DEFINE AW "W"
+#ELSE
+  #DEFINE AW "A"
+#ENDIF
+type
+  INSTALLSTATE = Longint;
+const
+  INSTALLSTATE_INVALIDARG = -2;  // An invalid parameter was passed to the function.
+  INSTALLSTATE_UNKNOWN = -1;     // The product is neither advertised or installed.
+  INSTALLSTATE_ADVERTISED = 1;   // The product is advertised but not installed.
+  INSTALLSTATE_ABSENT = 2;       // The product is installed for a different user.
+  INSTALLSTATE_DEFAULT = 5;      // The product is installed for the current user.
+
+  // Microsoft Visual C++ Redistributable Package is installed at "c:\WINDOWS\WinSxS\"
+  VC_2005_REDIST_X86                  = '{A49F249F-0C91-497F-86DF-B2585E8E76B7}';
+  VC_2005_REDIST_X64                  = '{6E8E85E8-CE4B-4FF5-91F7-04999C9FAE6A}';
+  VC_2005_REDIST_IA64                 = '{03ED71EA-F531-4927-AABD-1C31BCE8E187}';
+  VC_2005_SP1_REDIST_X86              = '{7299052B-02A4-4627-81F2-1818DA5D550D}';
+  VC_2005_SP1_REDIST_X64              = '{071C9B48-7C32-4621-A0AC-3F809523288F}';
+  VC_2005_SP1_REDIST_IA64             = '{0F8FB34E-675E-42ED-850B-29D98C2ECE08}';
+  VC_2005_SP1_ATL_SEC_UPD_REDIST_X86  = '{837B34E3-7C30-493C-8F6A-2B0F04E2912C}';  // Microsoft Visual C++ 2005 Redistributable, v 8.0.59193
+  VC_2005_SP1_ATL_SEC_UPD_REDIST_X64  = '{6CE5BAE9-D3CA-4B99-891A-1DC6C118A5FC}';
+  VC_2005_SP1_ATL_SEC_UPD_REDIST_IA64 = '{85025851-A784-46D8-950D-05CB3CA43A13}';
+
+  VC_2008_REDIST_X86                  = '{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}';
+  VC_2008_REDIST_X64                  = '{350AA351-21FA-3270-8B7A-835434E766AD}';
+  VC_2008_REDIST_IA64                 = '{2B547B43-DB50-3139-9EBE-37D419E0F5FA}';
+  VC_2008_SP1_REDIST_X86_             = '{3C3D696B-0DB7-3C6D-A356-3DB8CE541918}';  // Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729
+  VC_2008_SP1_REDIST_X86              = '{9A25302D-30C0-39D9-BD6F-21E6EC160475}';  // Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.17
+  VC_2008_SP1_REDIST_X64              = '{8220EEFE-38CD-377E-8595-13398D740ACE}';
+  VC_2008_SP1_REDIST_IA64             = '{5827ECE1-AEB0-328E-B813-6FC68622C1F9}';
+  VC_2008_SP1_ATL_SEC_UPD_REDIST_X86  = '{1F1C2DFC-2D24-3E06-BCB8-725134ADF989}';
+  VC_2008_SP1_ATL_SEC_UPD_REDIST_X64  = '{4B6C7001-C7D6-3710-913E-5BC23FCE91E6}';
+  VC_2008_SP1_ATL_SEC_UPD_REDIST_IA64 = '{977AD349-C2A8-39DD-9273-285C08987C7B}';
+  VC_2008_SP1_MFC_SEC_UPD_REDIST_X86  = '{9BE518E6-ECC6-35A9-88E4-87755C07200F}';  // Microsoft Visual C++ 2008 Redistributable - x86 9.0.30729.6161
+  VC_2008_SP1_MFC_SEC_UPD_REDIST_X64  = '{5FCE6D76-F5DC-37AB-B2B8-22AB8CEDB1D4}';
+  VC_2008_SP1_MFC_SEC_UPD_REDIST_IA64 = '{515643D1-4E9E-342F-A75A-D1F16448DC04}';
+
+  VC_2010_REDIST_X86                  = '{196BB40D-1578-3D01-B289-BEFC77A11A1E}';
+  VC_2010_REDIST_X64                  = '{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}';
+  VC_2010_REDIST_IA64                 = '{C1A35166-4301-38E9-BA67-02823AD72A1B}';
+  VC_2010_SP1_REDIST_X86              = '{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}';
+  VC_2010_SP1_REDIST_X64              = '{1D8E6291-B0D5-35EC-8441-6616F567A0F7}';
+  VC_2010_SP1_REDIST_IA64             = '{88C73C1C-2DE5-3B01-AFB8-B46EF4AB41CD}';
+
+function MsiQueryProductState(szProduct: string): INSTALLSTATE; 
+  external 'MsiQueryProductState{#AW}@msi.dll stdcall';
+
+function VCVersionInstalled(const ProductID: string): Boolean;
+begin
+  Result := MsiQueryProductState(ProductID) = INSTALLSTATE_DEFAULT;
+end;
+
+function VCRedistNeedsInstall: Boolean;
+var
+  r1, r2, r3: Boolean;
+begin
+  // here the Result must be True when you need to install your VCRedist
+  // or False when you don't need to, so now it's upon you how you build
+  // this statement, the following won't install your VC redist only when
+  // the Visual C++ 2010 Redist (x86) and Visual C++ 2010 SP1 Redist(x86)
+  // are installed for the current user
+#ifdef WIN64
+  r1 := VCVersionInstalled(VC_2008_REDIST_X64);
+  r2 := VCVersionInstalled(VC_2008_SP1_REDIST_X64);
+  r3 := VCVersionInstalled(VC_2008_SP1_MFC_SEC_UPD_REDIST_X64);
+#else
+  r1 := VCVersionInstalled(VC_2008_REDIST_X86);
+  r2 := VCVersionInstalled(VC_2008_SP1_REDIST_X86_);
+  r3 := VCVersionInstalled(VC_2008_SP1_MFC_SEC_UPD_REDIST_X86);
+#endif
+  Result := not ((r1 and r2) or r3);
+end;
+
diff -r 8a2f008e12a9 -r a51272db0457 VisualMagick/installer/inc/files-dlls.isx
--- a/VisualMagick/installer/inc/files-dlls.isx	Wed Jan 04 06:24:22 2023 +0100
+++ b/VisualMagick/installer/inc/files-dlls.isx	Thu Jan 05 06:22:44 2023 +0100
@@ -12,23 +12,25 @@
 
 #ifdef WIN64
   #define  public CPUARCH "amd64"
+  Source: "redist\VC2008SP1\vcredist_x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall; Check: VCRedistNeedsInstall
 #else
   #define  public CPUARCH "x86"
+  Source: "redist\VC2008SP1\vcredist_x86.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall; Check: VCRedistNeedsInstall
 #endif
 
 ;
 ; MSVC Runtime DLLs and manifests
 ;
 ; C runtime
-Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.CRT\msvcr90.dll; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
+;Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.CRT\msvcr90.dll; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
 
 ; C++ standard runtime
 ; Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.CRT\msvcp90.dll; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
-Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
+;Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.CRT\Microsoft.VC90.CRT.manifest; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
 
 ; OpenMP runtime
-Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.OPENMP\vcomp90.dll; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
-Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.OPENMP\Microsoft.VC90.OpenMP.manifest; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
+;Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.OPENMP\vcomp90.dll; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
+;Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.OPENMP\Microsoft.VC90.OpenMP.manifest; DestDir: {#MagickLibDirectory}; Flags: ignoreversion
 
 ; MFC C++ runtime
 ; Source: {#MSVCRedist}\{#CPUARCH}\Microsoft.VC90.MFC\mfc90.dll;   DestDir: {#MagickLibDirectory}; Flags: ignoreversion
diff -r 8a2f008e12a9 -r a51272db0457 VisualMagick/installer/redist/VC2008SP1/note.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VisualMagick/installer/redist/VC2008SP1/note.txt	Thu Jan 05 06:22:44 2023 +0100
@@ -0,0 +1,8 @@
+VisualMagick/installer/redist/VC2008SP1/vcredist_x64.exe must be downloaded from www
+VisualMagick/installer/redist/VC2008SP1/vcredist_x86.exe must be downloaded from www
+
+https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170
+
+https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe
+https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe
+
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.