|
|
Comments and Discussions
|
|
 |

|
Hi, I have the same problem. The changes don't fix the problem. The downloaded file is a selfextracting file containing two msi-files.
|
|
|
|

|
Try this code
Unfortunately you need to host sql compact by yourself.
File: scripts\products\sqlcompact35sp2.iss
[CustomMessages]
sqlcompact35sp2_title=SQL Server Compact 3.5 Service Pack 2
sqlcompact35sp2_titlex64=SQL Server Compact 3.5 Service Pack 2 x64
en.sqlcompact35sp2_size=3.0 MB
de.sqlcompact35sp2_size=3.0 MB
en.sqlcompact35sp2_sizex64=3.5 MB
de.sqlcompact35sp2_sizex64=3.5 MB
[Code]
const
sqlcompact35sp2_url = 'http://pliki.naturalmedia.pl/prerequisites/SSCERuntime_x86-ENU.msi';
sqlcompact35sp2_urlx64 = 'http://pliki.naturalmedia.pl/prerequisites/SSCERuntime_x64-ENU.msi';
procedure sqlcompact35sp2();
begin
if (not IsWin64 and
not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU')) then
AddProduct('SSCERuntime_x86-ENU.msi',
'/qb',
CustomMessage('sqlcompact35sp2_title'),
CustomMessage('sqlcompact35sp2_size'),
sqlcompact35sp2_url,
false, false);
if (IsWin64
and
(
not RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU')
and not RegKeyExists(HKLM, 'Wow6432Node\SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU')
)) then
begin
AddProduct('SSCERuntime_x86-ENU.msi',
'/qb',
CustomMessage('sqlcompact35sp2_title'),
CustomMessage('sqlcompact35sp2_size'),
sqlcompact35sp2_url,
false, false);
AddProduct('SSCERuntime_x64-ENU.msi',
'/qb',
CustomMessage('sqlcompact35sp2_titlex64'),
CustomMessage('sqlcompact35sp2_sizex64'),
sqlcompact35sp2_urlx64,
false, false);
end;
end;
Tomasz Maj
|
|
|
|

|
Thanks Tomasz, it works! I had already thought about such a solution, but with your code I didn't needed to write it myself
|
|
|
|

|
Hello,
I have got the problem that the installer wants to install the c++ 2010
reditributable package and then exits because it recognizes that a newer
version of the package is already installed.
That's possible because I have Visual Studio 2010 installed on that machine.
But what can I do then ? I cannot install the program.
It would be great if your could edit the vcredist2010.iss file that it recognizes
that the package is already installed if its a newer one.
Thanks,
Matthias
|
|
|
|

|
If you look into scripts/products/vcredist2010.iss, I think it should say
RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\' + GetString('x86', 'x64', 'ia64'), 'Installed', version);
instead of
RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\' + GetString('x86', 'x64', 'ia64'), 'Install', version);
ie. there is no Install value, but there is Installed. That is also consistent with the check for one on the next line
if (version <> 1) then ...
|
|
|
|

|
True. I've run into that issue as well. But there's one more, regarding detection on on x64/ia64 (regardless which runtime is installed). I'm adressing that in a separate post "Detecting/Installing VC++ 2010 Runtime".
|
|
|
|

|
I've added a new product script called vcredist2008.iss - what is yet missing is proper detection by registry key, though. This is different to VC++ 2010 (numerous keys and versions possible as far as I can see). I tried to workaround this by using the '/q' switch so that no "repair" dialog occurs if already installed. Still, improvements would be welcome:
// requires Windows 7, Windows 7 Service Pack 1, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service Pack 3
// requires Windows Installer 3.1 or later
// requires Internet Explorer 5.01 or later
// http://www.microsoft.com/downloads/en/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992
[CustomMessages]
vcredist2008_title=Visual C++ 2008 Redistributable
en.vcredist2008_size=3.9 MB
de.vcredist2008_size=3,9 MB
en.vcredist2008_size_x64=4.7 MB
de.vcredist2008_size_x64=4,7 MB
en.vcredist2008_size_ia64=4.0 MB
de.vcredist2008_size_ia64=4,0 MB
;http://www.microsoft.com/globaldev/reference/lcid-all.mspx
en.vcredist2008_lcid=''
de.vcredist2008_lcid='/lcid 1031 '
[Code]
const
vcredist2008_url = 'http://download.microsoft.com/download/0/a/5/0a5ce308-1e15-4806-964c-72dbf88de86d/vcredist_x86.exe';
vcredist2008_url_x64 = 'http://download.microsoft.com/download/4/a/9/4a932a53-ab98-44d9-af39-75491eb20006/vcredist_x64.exe';
vcredist2008_url_ia64 = 'http://download.microsoft.com/download/c/9/4/c9494e23-6717-47c3-a061-3cc2ce5453f8/vcredist_IA64.exe';
procedure vcredist2008();
var
version: cardinal;
begin
//RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\' + GetString('x86', 'x64', 'ia64'), 'Install', version);
//if (version <> 1) then
AddProduct('vcredist2008' + GetArchitectureString() + '.exe',
CustomMessage('vcredist2008_lcid') + '/q /passive /norestart',
CustomMessage('vcredist2008_title'),
CustomMessage('vcredist2008_size' + GetArchitectureString()),
GetString(vcredist2008_url, vcredist2008_url_x64, vcredist2008_url_ia64),
false, false);
end;
|
|
|
|

|
for now I've changed the procedure as follows:
procedure vcredist2008();
var
version: cardinal;
MS, LS: Cardinal;
begin
//RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\VisualStudio\10.0\VC\VCRedist\' + GetString('x86', 'x64', 'ia64'), 'Install', version);
//if (version <> 1) then
if GetVersionNumbers(ExpandConstant('{sys}\msvcr90.dll'), MS, LS) = false and GetVersionNumbers('msvcr90.dll', MS, LS) = false then
AddProduct('vcredist2008' + GetArchitectureString() + '.exe',
CustomMessage('vcredist2008_lcid') + '/q /passive /norestart',
CustomMessage('vcredist2008_title'),
CustomMessage('vcredist2008_size' + GetArchitectureString()),
GetString(vcredist2008_url, vcredist2008_url_x64, vcredist2008_url_ia64),
false, false);
end;
|
|
|
|
|

|
Hm, actually I wanted to avoid using product codes, as they potentially change between CPU architetures and service packages - but for my installer it doesn't matter.
I've "fixed" that now by migrating to VC++ 10 (2010) - but ran into another issue.
Will do a separate post with topic "Detecting/Installing VC++ 2010 Runtime".
|
|
|
|
 |
|
|
General News Suggestion Question Bug Answer Joke Rant Admin
|
A modular InnoSetup script to download and install all available .NET Framework versions and much more
| Type | Article |
| Licence | CPOL |
| First Posted | 13 Oct 2007 |
| Views | 473,055 |
| Downloads | 9,239 |
| Bookmarked | 224 times |
|
|