My installer includes the following files:
Source: "{#InnoPath}\Public Talk Titles\MSA_PublicTalks_???.xml"; DestDir: "{app}\Public Talk Titles"; Flags: overwritereadonly ignoreversion Source: "{#InnoPath}\Public Talk Titles\MSA_PublicTalks_Info.xml"; DestDir: "{#CommonDataDir}"; Flags: overwritereadonly ignoreversion
The common folder is defined as:
#define CommonDataDir "{commonappdata}\" + MSA
Now, on my website at a given url there is a XML file MSA_PublicTalks_DBInfo.xml. Is it possible to do the following:
- Download the XML file
- Examine all installed talk XML file versions, eg
Compare those versions against the respective version in the DBInfo file, eg:
The language code can be exacted from the file names, eg:
MSA_PublicTalks_ENG.xml
If atleast one language needs updating them we should download the installer. To recap:
- install my xml files
- download the dbinfo
- iterate the installed xml files, lookup the version number in db info and compare, if atleast 1 is newer version we should mark the talk update installer to be downloaded.
When we run the installer it would do equivalent of:
// Try to run the installer
CString strParams;
strParams.Format(_T("/SP- /VERYSILENT /InstallPath=\"%s\""), (LPCTSTR)strProgramFolder);
if (!theApp.ExecuteProgram(strWorkingFolder + strSetupExe, strParams))
{
// Problem running the installer
AfxMessageBox(IDS_STR_UNABLE_RUN_PTINFO_INSTALLER, MB_OK | MB_ICONERROR);
return;
}
I am sorry that I don't have a working sample but my script is complex. I am simply trying to automate the need to download the run the talks database installer to update the talk database files if needed.
One example:
- Open MSA_PublicTalks_ENG.xml
- Extract Version attribute.
- Open DBInfo
- Locate the Database entry with language eng, and compare Version values.
- If newer, then we must add the installer to download and install.