我认为我不会得到这个答案,因为它太模糊了,但是到底是什么。我正在尝试INNO设置安装SQL COMPACT作为安装过程的一部分。
我有正确的脚本,它下载文件SSCERuntime-ENU。但看起来下载已经改变,因为INNO SETUP总是说它不是有效的安装程序。所以我解压缩它,并且有2x MSI用于X86和X64。我希望我的应用程序在X86和X64上运行,因此我需要运行两个安装包。
无论如何,有没有人遇到过这个?是否有一种简单的方法可以告诉SSCERuntime安装一个或两个版本?我似乎无法找到一个命令行参数来执行此操作,因为运行时似乎是自解压存档,它会丢弃这两个MSI包......
帮助!
答案 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;