我正在尝试在客户端的计算机上部署我发布的项目,但是设置一直给我这个错误“要在全局程序集缓存中安装的microsoft同步数据服务器版本2.0.0.0”
任何帮助都将不胜感激! 我在C#Visual stuido 2010上工作,我的电脑是64位,而我的客户端电脑也是64位 感谢
答案 0 :(得分:2)
您必须在客户端PC上安装Sync Framework。也许还有一些其他的Sql框架。
在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。平台和安装包的其他组合 可能会在安装路径上产生轻微变化。
如果您希望在安装应用程序时将其作为先决条件,请查看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;