您必须在客户端 PC 上安装 Sync Framework。也许还有其他一些 Sql 框架。
This page says:
在 x86 平台上,x86 安装包安装
以下组件进入 Program Files\Microsoft SDKs\Microsoft Sync
Framework\2.1,并将托管 DLL 添加到全局程序集缓存
(GAC)。在 x64 平台上,x86 和 x64 安装
包安装到 Program Files (x86)\Microsoft SDKs\Microsoft Sync
框架\2.1。平台和安装包的其他组合
可能会在安装路径上产生细微的变化。
Download link
如果您希望在安装应用程序时将此作为先决条件,请查看this thread。
不过我建议你使用 Inno Script studio 来制作安装程序。 (免费且易于使用,但我想逆向工程并不难,只是说)。
Here is a post 关于使用 Inno Script 自动安装 .NET framework 4.0(或任何其他)。
当您完成此操作后,这也是我设法安装 Sync Framework 的方法,虽然还不是完全自动的,但它至少在安装您的应用程序时会启动安装程序。并且顺利完成了设置,但我无法自动完成它,因为 Sync Framework 安装程序是一个 .MSI 文件。
将此添加到文件部分:
[Files]
Source: "C:DIRECTORYHERE\Dependencies\SqlLocalDB.MSI"; DestDir: "{tmp}"; Flags: deleteafterinstall; Permissions: everyone-full; Check: SqlIsNotInstalled; AfterInstall: InstallSql
代码部分(你可以把它放在脚本的底部):
[Code]
procedure InstallSql;
var
ResultCode: Integer;
StatusText: string;
begin
StatusText := WizardForm.StatusLabel.Caption;
WizardForm.StatusLabel.Caption := 'Installing Microsoft SQL Local Database...';
if not ShellExec('',ExpandConstant('{tmp}\SqlLocalDB.MSI'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
begin
MsgBox('SQL local DB failed with code: ' + IntToStr(ResultCode) + '.',
mbError, MB_OK);
WizardForm.StatusLabel.Caption := StatusText;
end;
end;
并检查它是否已经安装:
[code]
function SqlIsNotInstalled: Boolean;
begin
Result := not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\11.0');
end;