Welcome to the Indigo Rose Software discussion forums! You will need to sign up for a forum account and login before you can post. Need help? View the Forum FAQ.
I assume that you do you have a runtime installer for Crystal Reports for Visual Studio 2005? If it is a bootstrapped MSI, decompress it using WinRAR. Open the *.msi with InstEd and look for a table named "Property". Search for a field named "ProductCode" - this is the identification of the product you can search for in your dependency module, using
Of course you must replace the string {12345678-1234-1234-1234-123456789ABC} with the correct product code you found using InstEd. Just pick an existing dependency module like this and edit it to search for the new product code, and correct the path and name of the runtime installer. This would be the quickest way.
If the product doesn't work this way, then you will have to run the installer in a controlled environment (like Sandboxie or using an utility like Total Uninstall) and inspect the registry entries that are created. Select the key that looks most appropriate and search for it in your script. If that registry key can't be found on the target computer during the detection phase, then you can assume that the product isn't installed yet.
These are general guidelines, applying to all products, not only Crystal Reports 2005. The dependency modules can and should be built by the end users of Setup Factory, but feel free to post your finished module here.
You really are better off just installing the msi to temp folder, and launching it's install & wait for it to complete over doing a dependency module.
The main problem I have with dependency modules is that it's a one way ticket.
BEFORE the user sees screen #1, you have installed something on their system.
I tend to put these sorts of things in as primer files, then launch them in pre-install actions, install the rest of the files, then check to see if it's finished in post-install actions.
I am trying to find the ProductCode so I can create a dependency for the very latest Visual Studio 2015 Update 3 x86/x64 VC Redist installers (download from https://www.microsoft.com/en-us/down....aspx?id=53587), but not having any luck on getting this working. Any help much appreciated.
You may need to update the scripts. The file distributed with this dependency was 14.0.24210, and you already have a more recent build installed (14.0.24215), so a new MSI Product must be added to the detection script.
Hi, great in the script there are two hashes, one of which I can find in the registry, how do I find the other please for QueryProductState so going forward I can create these scripts?
Ok worked out those bits but "Installed" is not found in the registry? Is this a change or have I done something wrong?
function isVC2015Update3x86_Installed()
SetupData.WriteToLogFile("Info\tVisual C++ 2015 (32-bit) Module: Detection script started.\r\n",true);
local nState = MSI.QueryProductState("{48171CEE-A5DE-49D9-920C-A92F816564BC}"); -- Microsoft Visual C++ 2015 x86 Additional Runtime - 14.0.24210
if (nState == INSTALLSTATE_DEFAULT) then
SetupData.WriteToLogFile("Info\tVisual C++ 2015 Module: Visual C++ Redistributable for Visual Studio 2015 Update 3 (x86) detected via ProductState.\r\n",true);
return true;
end
if (Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uni nstall\\{69BCE4AC-9572-3271-A2FB-9423BDA36A43}")) then
if (Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uni nstall\\{69BCE4AC-9572-3271-A2FB-9423BDA36A43}", "Installed") == "1") then
SetupData.WriteToLogFile("Info\tVisual C++ 2015 Module: Visual C++ Redistributable for Visual Studio 2015 Update 3 (x86) detected via registry key.\r\n",true);
return true;
end
end
SetupData.WriteToLogFile("Info\tVisual C++ 2015 Module: Visual C++ Redistributable for Visual Studio 2015 Update 3 (x86) not detected.\r\n",true);
return false;
end
Comment