I\'m trying to copy all database files over from a previous installation to a new installation, which has a new pathname. The problem is that the installer will not know th
You need to use FindFirst
, FindNext
, and FindClose
to iterate through the folder. You get each database name, and then copy it individually. An example of doing that in Pascal (Delphi) can be found here. There's also an example of using them in the InnoSetup help file, in the Support Functions Reference
section on File System Functions
:
// This example counts all of the files (not folders) in the System directory.
var
FilesFound: Integer;
FindRec: TFindRec;
begin
FilesFound := 0;
if FindFirst(ExpandConstant('{sys}\*'), FindRec) then begin
try
repeat
// Don't count directories
if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
FilesFound := FilesFound + 1;
until not FindNext(FindRec);
finally
FindClose(FindRec);
end;
end;
MsgBox(IntToStr(FilesFound) + ' files found in the System directory.',
mbInformation, MB_OK);
end;
You can change the loop above to look in the proper old folder for each *.mdb
(in the FindFirst
call) and change the line that counts to a block that copies each file found into the new folder (using either FileCopy
or a TFileStream
, whichever you prefer).
Your command line attempt can work if you modify it a little:
Exec('cmd.exe', '/c COPY "C:\Users\seang\Desktop\Old\*.mdb" "C:\Users\seang\Desktop\New"', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode);