2012-03-06 104 views
1

我不認爲我會得到一個答案,因爲它是如此晦澀,但到底是什麼。我正在嘗試INNO設置安裝SQL COMPACT作爲安裝過程的一部分。sql compact 3.5 sp2下載和無提示安裝

我有正確的腳本,下載文件SSCERuntime-ENU。但它看起來像下載已經改變,因爲INNO SETUP總是說它不是一個有效的安裝程序。所以我解開它,X86和X64有兩個MSI。我希望我的應用程序能夠在X86和X64上運行,所以我需要運行這兩個安裝包。

無論如何,有沒有人遇到過這個?是否有一種簡單的方法可以告訴SSCERuntime安裝一個或兩個版本?我似乎無法找到一個命令行參數來做到這一點,因爲運行時似乎是自我解壓檔案,它會丟棄這兩個MSI軟件包...

幫助!

回答

1

好吧,那麼無數小時後。我放棄了試圖讓安裝程序運行,看起來我可以直接將SQL CE DLL包含到bin目錄中,而不需要安裝它。我已經在Win7x86和WinVistax86下試過了。但我只是在Win7x64下試用它,以確保它能夠找到正確的版本。根據我讀過的所有內容,只要應用程序編譯爲在x86下運行,它就不需要x64 SQL CE文件...

+0

這是正確的,但你也可以包括2 sqlcexx.dll文件每個平臺的文件夾,x86和AMD64 – ErikEJ 2012-03-06 17:19:00

+0

您正在使用哪個DLL? – 2013-08-06 02:56:58

0

您需要從e SSCERuntime-ENU.exe獲取額外的文件,然後託管SSCERuntime_x64-ENU.msi和SSCERuntime_x86-ENU.msi。

我修改Modular InnoSetup Dependecy Installer安裝SQL精簡DB

文件:腳本/產品/ 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; 
0

如果這是你只需要運行一個SSCERuntime_x86- 32位應用程序ENU.msi安裝包(即使在x64 Windows上,因爲它將在x86模擬器中運行)。但是,如果您需要本機64位支持,則可以改爲運行x64包。它們只是標準的MSI文件,因此您將標準Windows安裝程序開關應用於msiexec.exe。運行msiexec.exe /?以獲取交換機的完整列表。以下是如何在您的創新安裝包安裝,檢查現有安裝,如果需要的話,默默地運行安裝程序:

[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; 
相關問題