This is an old revision of the document!
ezFIT Optimizer (for Clarujust) Installation
Installing Clarujust Proxy Files
[Files] ... ;--------------------------------------------------- ; Clarujust files ;--------------------------------------------------- Source: ..\ClarujustProxy\MockClarujustApp.dll; DestDir: {app}\Clarujust; Flags: ignoreversion Source: ..\ClarujustProxy\ClarujustProxyServer.dll; DestDir: {app}\Clarujust; Flags: ignoreversion ;Source: ..\ClarujustProxy\ClarujustProxyServer.tlb; DestDir: {app}\Clarujust; Flags: ignoreversion Source: ..\ClarujustProxy\Interop.EzFITOptimizerSvr.dll; DestDir: {app}\Clarujust; Flags: ignoreversion ... [Run] ; RegAsm path: {win}\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe Filename: {dotnet20}\RegAsm.exe; Parameters: ClarujustProxyServer.dll /codebase /silent; WorkingDir: {app}\Clarujust\; Flags: skipifdoesntexist runhidden ... [UninstallRun] ; RegAsm path: {win}\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe Filename: {dotnet20}\RegAsm.exe; Parameters: ClarujustProxyServer.dll /unregister; WorkingDir: {app}\Clarujust\; Flags: skipifdoesntexist runhidden ...
ezFIT Installer Executing Clarujust Installer
ezFIT installer would call the Clarujust installer and provide the ezFIT installation path, so that Clarujust can install itself relative to that path. This information is better provided during installation as a command-line parameter rather than reading the Windows Registry, since some of those entries might not have been created or updated yet.
Script Sample
Calling Clarujust Inno-setup script with a parameter AppPath
to let it know the ezFIT path:
;//---------------------------------------------------------------------------- ;// Inno-script: ezfit-clarujust-setup.iss ;//---------------------------------------------------------------------------- ... [Files] ;--------------------------------------------------- ; Application files ;--------------------------------------------------- Source: {src}\clarujust-setup.exe; DestDir: {src}; Flags: ignoreversion external skipifsourcedoesntexist dontcopy ... [Run] Filename: {src}\clarujust-setup.exe; Parameters: /AppPath={app}; Description: {cm:LaunchProgram,clarujust-setup.exe}; Flags: skipifdoesntexist ...
Clarujust Inno-setup script using the AppPath
command-line parameter to set target installation path for Clarujust:
;//---------------------------------------------------------------------------- ;// Inno-script: clarujust-setup.iss ;//---------------------------------------------------------------------------- ;//---------------------------------------------------------------------------- ;// Global Defines ;//---------------------------------------------------------------------------- #define DefaultAppPath "Audina\ezFITOptimizer\" ... ;//---------------------------------------------------------------------------- ;// Setup section ;//---------------------------------------------------------------------------- [Setup] ;DefaultDirName={code:GetAppPath}\Clarujust DefaultDirName={param:AppPath|{pf}\{#DefaultAppPath}\Clarujust} ... [Files] ;--------------------------------------------------- ; Clarujust files ;--------------------------------------------------- Source: ..\ClarujustProxy\MockClarujustApp.dll; DestDir: {app}\Clarujust; Flags: ignoreversion Source: ..\ClarujustProxy\ClarujustProxyServer.dll; DestDir: {app}\Clarujust; Flags: ignoreversion Source: ..\ClarujustProxy\ClarujustProxyServer.tlb; DestDir: {app}\Clarujust; Flags: ignoreversion Source: ..\ClarujustProxy\Interop.EzFITOptimizerSvr.dll; DestDir: {app}\Clarujust; Flags: ignoreversion ... [Run] Filename: {dotnet20}\RegAsm.exe; Parameters: ClarujustProxyServer.dll /codebase /silent; WorkingDir: {app}\Clarujust\; Flags: skipifdoesntexist runhidden ... [UninstallRun] Filename: {dotnet20}\RegAsm.exe; Parameters: ClarujustProxyServer.dll /unregister; WorkingDir: {app}\Clarujust\; Flags: skipifdoesntexist runhidden [Code] //---------------------------------------------------------------------------- // function prototypes //---------------------------------------------------------------------------- function GetAppPath(): string; forward; ... //---------------------------------------------------------------------------- // description: get the applicaton path sent by command-line param /AppPath // parameters : void // return : pth (string) //---------------------------------------------------------------------------- function GetAppPath(): string; var pth: string; begin // ezFIT installer will pass ezFIT's target path to the Clarujust installer (as a command line parameter). // We get this parameter and extract the path to determine where Clarujust will be installed. // InnoSetup receives it as Param 2. // For example: Param 1 = /SL5="$2074A,72847574,53248,D:\...\innosetup\output\ezfit-setup.exe" // Param 2 = /ezfitpath="C:\Program Files\Audina\ezFIT4" pth := ExpandConstant('{param:AppPath|{pf}\{#DefaultAppPath}}'); Log('GetAppPath(): pth=['+pth+']'); result := pth; end;
Clarujust Installer Executing ezFIT Installer
The ezFIT installer already creates a Windows registry entry that can bed use for querying its version and installation path: For ezFIT Stand-alone:
HKEY_LOCAL_MACHINE\Software\Audina Hearing Instruments\ezFIT\4.0\Setup\Product Path HKEY_LOCAL_MACHINE\Software\Audina Hearing Instruments\ezFIT\4.0\Setup\Version
Example:
- Product Path:
C:\Program Files\Audina\ezFIT4
- Version:
4.212009102701
For ezFIT for Noah:
HKEY_LOCAL_MACHINE\Software\Audina Hearing Instruments\ezFIT\4.0\Setup\Noah Product Path HKEY_LOCAL_MACHINE\Software\Audina Hearing Instruments\ezFIT\4.0\Setup\ezFIT NOAH Version
Example:
- Noah Product Path:
C:\PROGRA~1\HIMSA\Modules\Fitting\044
- ezFIT NOAH Version:
4.212009102701
The Clarujust installer should probably check that ezFIT has been installed (by checking the path and version in the Windows registry), and then it can proceed with the installation.
Sample Script
[Files] ;--------------------------------------------------- ; Application files ;--------------------------------------------------- Source: {src}\ezfit-setup.exe; DestDir: {src}; Flags: ignoreversion external skipifsourcedoesntexist dontcopy; Languages: ... [Run] Filename: {src}\ezfit-setup.exe; Description: {cm:LaunchProgram,ezfit.exe}; Flags: skipifdoesntexist; Check: NoValidEzFitExists ... [Code] //---------------------------------------------------------------------------- // Function prototypes //---------------------------------------------------------------------------- function GetEzfitPath(): string; forward; function GetEzfitVersion(): string; forward; function NoValidEzFitExists(ValidVer: string): Boolean; forward; ... //---------------------------------------------------------------------------- // description: get the correct ezFIT path (installation dir). // parameters : void // return : pth (string) //---------------------------------------------------------------------------- function GetEzfitPath(): string; var pth: string; begin // Registry: HKEY_LOCAL_MACHINE\Software\Audina Hearing Instruments\ezFIT\4.0\Setup\Product Path RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Audina Hearing Instruments\ezFIT\4.0\Setup\', 'Product Path', pth); if trim(pth) <> '' then begin if DirExists(pth) then begin pth := trim(pth); if ForceDirectories(pth) then begin Log('GetEzfitPath(): created dir pth=['+pth+']'); end else begin Log('GetEzfitPath(): not created dir pth=['+pth+']'); end; end; end else begin Log('GetEzfitPath(): ezFIT not installed in this system.'); end; result := pth; end; //---------------------------------------------------------------------------- // description: get the current ezFIT version. // parameters : void // return : ver (string) //---------------------------------------------------------------------------- function GetEzfitVersion(): string; var ver: string; begin // Registry: HKEY_LOCAL_MACHINE\Software\Audina Hearing Instruments\ezFIT\4.0\Setup\Version RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Audina Hearing Instruments\ezFIT\4.0\Setup\', 'Version', ver); if trim(ver) <> '' then begin Log('GetEzfitVersion(): ezFIT ver=['+ver+']'); end else begin Log('GetEzfitVersion(): ezFIT not installed'); end; result := ver; end; //---------------------------------------------------------------------------- // description: Verify there is no valid ezFIT installation in system. // parameters : void // return : T if no installation, F if there is an existing installation //---------------------------------------------------------------------------- function NoValidEzFitExists(ValidVer: string): Boolean; var curBuild, validBuild: integer; begin result := False; if GetEzfitPath() <> '' then begin curBuild := StrToInt(copy(GetEzfitVersion(), 2, 10)); validBuild := StrToInt(copy(ValidVer, 2, 10)); if StrToFloat(curBuild) >= (validBuild) then begin result := True; end; end; end;