【问题标题】:sql compact 3.5 sp2 download and silent installsql compact 3.5 sp2 下载和静默安装
【发布时间】:2015-05-13 23:38:46
【问题描述】:

我不认为我会得到这个问题的答案,因为它是如此晦涩难懂,但到底是什么。我正在尝试 INNO 设置以在安装过程中安装 SQL COMPACT。

我有正确的脚本,它下载文件 SSCERuntime-ENU。但看起来下载已更改,因为 INNO SETUP 总是说它不是有效的安装程序。所以我把它拆开,X86 和 X64 有 2 个 MSI。我希望我的应用程序同时在 X86 和 X64 上运行,所以我需要运行这两个安装包。

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

帮助!

【问题讨论】:

    标签: sql-server-ce inno-setup


    【解决方案1】:

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

    【讨论】:

    • 没错,但您也可以将 sqlcexx.dll 文件包含在每个 platfrom、x86 和 AMD64 的 2 个文件夹中
    • 您要包含哪个 DLL?
    【解决方案2】:

    您需要从 e SSCERuntime-ENU.exe 中解压文件,然后自己托管 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;
    

    【讨论】:

      【解决方案3】:

      如果它是 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多