我試圖檢測和安裝的ReportViewer 2005的.NET 2.0的應用程序我默默發展 我已經下載的ReportViewer 2005年再分發安裝,我有這個腳本檢測並Inno Setup的靜默安裝reportviwer
檢查代碼如果的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的開發機器中,它仍然彈出reportviewer設置,它不會默默安裝
我在做什麼錯?
編輯
我發現用參數安裝過沉默是ReportViewer.exe /q:a /c:"install.exe /q"
我如何poass的/q:a /c:"install.exe /q"
到shell執行命令?
我沒有看到參數在ReportViewer.exe提示模式進行安裝。您應該添加特定的參數(例如/ q或/ silent - 您應該檢查哪個是適用於此應用的正確參數)。編輯:我已檢查:您的缺失參數是'/ Q'。因此,該行將是:'ShellExec('',ExpandConstant('{tmp} \ ReportViewer.exe'),'\ Q',ExpandConstant('{tmp}'),SW_HIDE,ewWaitUntilTerminated,ErrorCode)' – RobeN
我得到命令行錯誤,當我執行你的代碼'ShellExec('',ExpandConstant('{tmp} \ ReportViewer.exe'),'\ Q',ExpandConstant('{tmp}'),SW_HIDE,ewWaitUntilTerminated,ErrorCode)' – Smith
對不起對於錯字:應該是'/ Q',而不是'\ Q' :( – RobeN