我正在尝试为我默默开发的 .net 2.0 应用程序检测和安装 reportviewer 2005 我已经下载了 reportviewer 2005 可再发行安装程序,并且我有这个脚本
检查是否安装了reportviewer的代码
/////////////////////////////////////////////////
// check if report viewer is installed
////////////////////////////////////////////////
function IsReportViewerInstalled(version: string): boolean;
// 'v2.0.50727' .NET Framework 2.0
var
key: string;
install: cardinal;
success: boolean;
ErrorCode: Integer;
begin
// installation all report viewer
key := 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ReportViewer\' + version;
success := RegQueryDWordValue(HKLM, key, 'Install', install);
result := success and (install = 1);
end;
检测和安装的代码
if not IsReportViewerInstalled('v2.0.50727') then begin
ExtractTemporaryFile('ReportViewer.exe');
Log(ExpandConstant('{tmp}\ReportViewer.exe'));
if ShellExec('', ExpandConstant('{tmp}\ReportViewer.exe'), '','', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode) then begin
Result := True;
end else begin
MsgBox('ReportViewer installation failed. '+SysErrorMessage(ErrorCode), mbError, MB_OK);
Result := false;
end;
end else begin
result := true;
end;
如果我在安装了 reportviewer 的开发机器上运行 inno 设置,它仍然会弹出 reportviewer 设置并且它不会静默安装
我究竟做错了什么?
编辑
我发现安装silen的参数是ReportViewer.exe /q:a /c:"install.exe /q"
我如何/q:a /c:"install.exe /q"
将shell执行命令传递给?