crystal-reports inno-setup pascalscript

crystal reports - Comprobar la arquitectura del sistema en Inno Setup



crystal-reports inno-setup (1)

Estoy usando Inno Setup para crear un BootStrapper para mi proyecto .NET desarrollado.

Mientras uso PascalScript , estoy enfrentando algunos problemas. Pero antes de eso, aquí está el script que estoy usando para crear el BootStrapper

#define MyAppName "<ProductName>" #define MyAppVersion "<ProductVersion>" #define MyAppPublisher "<Company Name>" #define MyAppURL "<URL>" #define MyAppExeName "<AppName>.exe" #define MyAppCopyright "Copyright@2015" #define MyContact "<Contact No>" [Setup] AppId={{69A884D3-671F-4DFB-9E23-F6FA35BD6264} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName={pf}/{#MyAppName} DisableDirPage=yes DefaultGroupName={#MyAppName} DisableProgramGroupPage=yes LicenseFile=<License File Path> OutputDir=<Output Directory Path> OutputBaseFilename=<Output File Name> Compression=lzma SolidCompression=yes SetupIconFile=<Icon File Path> ArchitecturesInstallIn64BitMode=x64 AppCopyright={#MyAppCopyright} AppContact={#MyContact} VersionInfoVersion=1.5 VersionInfoCompany=<Company Name> VersionInfoProductName=<Product Name> VersionInfoProductVersion=<Product Version> [Languages] Name: "english"; MessagesFile: "compiler:Default.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 0,6.1 [Files] Source: "<Path>/NDP452-KB2901907-x86-x64-AllOS-ENU.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall; Permissions: admins-full; Check: Framework45IsNotInstalled Source: "<Path>/CRRuntime_32bit_13_0_13.msi"; DestDir: "{tmp}"; Flags: deleteafterinstall 32bit; Permissions: admins-full; Source: "<Path>/CRRuntime_64bit_13_0_14.msi"; DestDir: "{tmp}"; Flags: 64bit deleteafterinstall; Permissions: admins-full; Check: IsWin64 Source: "<Path>/SSCERuntime_x86-ENU.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall 32bit; Permissions: admins-full Source: "<Path>/SSCERuntime_x64-ENU.exe"; DestDir: "{tmp}"; Flags: 64bit deleteafterinstall; Permissions: admins-full; Check: IsWin64 Source: "<Path>/<Product>.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "<Path>/File1.dll"; DestDir: "{app}"; Flags: ignoreversion ; NOTE: Don''t use "Flags: ignoreversion" on any shared system files [Run] Filename: {tmp}/NDP452-KB2901907-x86-x64-AllOS-ENU.exe; Parameters: "/q /norestart"; Check: Framework45IsNotInstalled; StatusMsg: Microsoft Framework 4.0 is being installed. This process might take some time. Please wait..... Filename: "msiexec.exe"; Parameters: "/i ""{tmp}/CRRuntime_32bit_13_0_13.msi"; StatusMsg: Crystal Reports Runtime is being installed. Please wait....; Filename: {tmp}/SSCERuntime_x86-ENU.exe; StatusMsg: Microsoft SQL Compact 4.0 is being installed. Please wait..... [Code] function Framework45IsNotInstalled(): Boolean; var regresult: Cardinal; begin RegQueryDWordValue(HKLM, ''Software/Microsoft/NET Framework Setup/NDP/v4/Full'', ''Install'', regresult); if (regresult = 0) then begin Result := True; end else begin Result := False; end; end; [Icons] Name: "{group}/{#MyAppName}"; Filename: "{app}/{#MyAppExeName}" Name: "{group}/{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" Name: "{commondesktop}/{#MyAppName}"; Filename: "{app}/{#MyAppExeName}"; Tasks: desktopicon Name: "{userappdata}/Microsoft/Internet Explorer/Quick Launch/{#MyAppName}"; Filename: "{app}/{#MyAppExeName}"; Tasks: quicklaunchicon [Run] Filename: "{app}/{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, ''&'', ''&&'')}}"; Flags: nowait postinstall skipifsilent

Ahora tengo tres problemas con respecto a este problema:

  1. ¿Cómo verificar si la arquitectura del sistema es de 32 bits o 64 bits y ejecutar el archivo correspondiente en consecuencia?

Por ejemplo, como se menciona en el script, he adjuntado Dos archivos para Crystal Reports . Ahora, al ejecutar la instalación, la configuración debe detectar la Arquitectura del sistema y ejecutar el archivo correspondiente. Traté de resolver esto usando este enlace aquí en StackOverdlow, pero no lo entendí del todo.

  1. Comprueba si el prerrequisito ya está instalado en el sistema o no

Por ejemplo, para comprobar si .NET Framework ya está instalado en la máquina, obtuve el script mencionado anteriormente y está funcionando bien. ¿Cómo hacer eso para Crystal Report o SQL Compact ?

Intenté este Script para Crystal Report pero no funciona.

[Code] function CheckForCrystalReports: Boolean; var regresul: Cardinal; begin RegQueryDWordValue(HKLM, ''SOFTWARE/SAP BusinessObjects/Suite XI 4.0/Installer/CRV'',''Install'',regresul); if(regresul = 0) then begin Result := True; end else begin Result := False; end; end;

  1. Ejecutar ejecutable en modo silencioso

Por ejemplo, en el script anterior, estoy usando Parameters: "/q /norestart"; para ejecutar la configuración en modo silencioso y su funcionamiento. ¿Pero cómo hacer eso para el archivo *.msi ? Intenté algunos parámetros pero no están funcionando.


Pruebe esta solución con ShellExec :

[Run] Filename: "{tmp}/CRRuntime_32bit_13_0_13.msi"; Parameters: "/passive"; Flags: shellexec waituntilterminated skipifdoesntexist; StatusMsg: "Crystal Reports Runtime is being installed. Please wait...";

Si desea llamar a través de MSIEXEC :

[Run] Filename: "msiexec.exe"; Parameters: "/passive /i ""{tmp}/CRRuntime_32bit_13_0_13.msi"""; Flags: waituntilterminated skipifdoesntexist; StatusMsg: "Crystal Reports Runtime is being installed. Please wait...";

PD En su fragmento de código de Comentario, faltaron citas para los Parameters . Debería abrir y cerrar los parámetros con " luego, si necesita usar la cita en la línea de parámetros, debe usarla doblada "" .

Para SQL Compact puede usar el siguiente código:

[Files] Source: "C:/Temp/SSCERuntime_x64-ENU.exe"; DestDir: "{tmp}"; Flags: nocompression deleteafterinstall uninsremovereadonly Source: "C:/Temp/SSCERuntime_x86-ENU.exe"; DestDir: "{tmp}"; Flags: nocompression deleteafterinstall uninsremovereadonly [Run] Filename: "{tmp}/SSCERuntime_x64-ENU.exe"; Parameters: "/qn /i"; Flags: waituntilterminated skipifdoesntexist; StatusMsg: SQL Compact 4.0 x64 is being installed. Please wait...; Check: (IsWin64) and (not IsSQLCompact40Installed); Filename: "{tmp}/SSCERuntime_x86-ENU.exe"; Parameters: "/qn /i"; Flags: waituntilterminated skipifdoesntexist; StatusMsg: SQL Compact 4.0 x86 is being installed. Please wait...; Check: (not IsWin64) and (not IsSQLCompact40Installed); [Code] function IsSQLCompact40Installed(): Boolean; var InstallDirString : String; begin result := false; if RegQueryStringValue(HKLM, ''SOFTWARE/Microsoft/Microsoft SQL Server Compact Edition/v4.0'', ''InstallDir'', InstallDirString) then begin if FileExists(InstallDirString + ''/sqlcecompact40.dll'') then result := true; end; end;