SCRIPT (IN LastUpdate TIMESTAMP) BEGIN DECLARE ConfigCursor CURSOR FOR ConfigStmt; DECLARE UpdateCursor CURSOR FOR UpdateStmt; DECLARE UpdateFile VARCHAR DEFAULT ''; -- Create necessary stores, if not present USE Configuration; PREPARE ConfigStmt FROM 'SELECT * FROM Stores WHERE Name = ?'; OPEN ConfigCursor USING 'AppUpdatesRemote'; IF ROWCOUNT(ConfigCursor) = 0 THEN SET STATUS MESSAGE TO 'Creating AppUpdatesRemote store'; EXECUTE IMMEDIATE 'CREATE STORE "AppUpdatesRemote" AS REMOTE ADDRESS ''127.0.0.1'' PORT 12010 USER "Administrator" PASSWORD ''EDBDefault'' STORE "AppUpdates"'; END IF; CLOSE ConfigCursor; OPEN ConfigCursor USING 'AppUpdatesLocal'; IF ROWCOUNT(ConfigCursor) = 0 THEN SET STATUS MESSAGE TO 'Creating AppUpdatesLocal store'; EXECUTE IMMEDIATE 'CREATE STORE "AppUpdatesLocal" AS LOCAL PATH ''c:\myapp\updates'''; END IF; CLOSE ConfigCursor; -- Get a list of all the executables in the AppUpdates store and copy -- them to the local AppUpdates store SET STATUS MESSAGE TO 'Checking server for updates'; EXECUTE IMMEDIATE 'SET FILES STORE TO "AppUpdatesRemote"'; PREPARE UpdateStmt FROM 'SELECT * FROM Files WHERE CreatedOn > ? ORDER BY CreatedOn DESC RANGE 1 TO 1'; OPEN UpdateCursor USING LastUpdate; IF ROWCOUNT(UpdateCursor) > 0 THEN FETCH FIRST FROM UpdateCursor (Name) INTO UpdateFile; -- Copy new update to the local store SET STATUS MESSAGE TO 'Downloading ' + UpdateFile; BEGIN EXECUTE IMMEDIATE 'COPY FILE "' + UpdateFile + '" IN STORE "AppUpdatesRemote" TO "' + UpdateFile + '" IN STORE "AppUpdatesLocal"'; EXCEPTION SET STATUS MESSAGE TO 'Error downloading ' + UpdateFile + '(' + ERRORMSG() + ')'; LEAVE; END; ELSE SET STATUS MESSAGE TO 'No new updates found'; END IF; END