sql compact 3.5 sp2下载和静默安装

时间:2012-03-06 08:30:27

标签: sql-server-ce inno-setup

我认为我不会得到这个答案,因为它太模糊了,但是到底是什么。我正在尝试INNO设置安装SQL COMPACT作为安装过程的一部分。

我有正确的脚本,它下载文件SSCERuntime-ENU。但看起来下载已经改变,因为INNO SETUP总是说它不是有效的安装程序。所以我解压缩它,并且有2x MSI用于X86和X64。我希望我的应用程序在X86和X64上运行,因此我需要运行两个安装包。

无论如何,有没有人遇到过这个?是否有一种简单的方法可以告诉SSCERuntime安装一个或两个版本?我似乎无法找到一个命令行参数来执行此操作,因为运行时似乎是自解压存档,它会丢弃这两个MSI包......

帮助!

3 个答案:

答案 0 :(得分:1)

好的,几个小时之后如此令人沮丧。我放弃了尝试让安装程序运行,看起来我可以直接将SQL CE DLL包含在bin目录中,而不需要安装它。我在Win7x86和WinVistax86下试过这个。但我只是在Win7x64下尝试它以确保它获得正确的版本。根据我读过的所有内容,只要应用程序编译为在x86下运行,它就不需要x64 SQL CE文件......

答案 1 :(得分:0)

您需要从e SSCERuntime-ENU.exe获取extraxt文件,然后自己托管SSCERuntime_x64-ENU.msi和SSCERuntime_x86-ENU.msi。

我已修改Modular InnoSetup Dependecy Installer以安装Sql Compact DB

文件: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;

答案 2 :(得分:0)

如果它是32位应用程序,您只需运行SSCERuntime_x86-ENU.msi安装包(即使在x64 Windows上,因为它将在x86模拟器中运行)。但是,如果您需要本机64位支持,则可以改为运行x64程序包。它们只是标准的MSI文件,因此您将标准的Windows Installer开关应用于msiexec.exe。运行msiexec.exe /?以获取完整的交换机列表。以下是如何在Inno Setup软件包中包含安装程序,检查现有安装,如果需要,请静默运行安装程序:

[Files]
Source: "Source Files\SSCERuntime_x86-ENU.msi"; DestDir: "{tmp}"; Permissions: everyone-full; Flags: deleteafterinstall

[Run]
Filename: "{sys}\msiexec.exe"; Parameters: "/i ""{tmp}\SSCERuntime_x86-ENU.msi"" /quiet /norestart"; StatusMsg: "Installing Microsoft SQL Server Compact 3.5 SP2..."; Flags: runhidden; Check: not IsMSSQL35Installed

[Code]
//Check if Microsoft SQL Server Compact 3.5 SP2 is installed
function IsMSSQL35Installed(): Boolean;
var
  strVersion: String;
  strServicePack: String;
begin
  RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU', 'DesktopRuntimeVersion', strVersion)
  RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Microsoft SQL Server Compact Edition\v3.5\ENU', 'DesktopRuntimeServicePackLevel', strServicePack)
  if strVersion = '3.5.8080.0' and strServicePack = '2' then
    Result := True;
end;