2013-06-04 3 views
1

je suis en train de détecter et installer ReportViewer 2005 pour une .net 2.0 app je développe silencieusement i déjà téléchargé ReportViewer 2005 installateur redistribuable et j'ai ce scriptdétecter et installer reportviwer silencieusement avec l'installation de Inno

Le code pour vérifier si ReportViewer est installé

///////////////////////////////////////////////// 
// 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; 

le code pour détecter et insall

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; 

si j'exécuter l'installation Inno dans ma machine dev qui a reportviewer installé, il affiche toujours la configuration de reportviewer et il ne s'installe pas silencieusement

qu'est-ce que je fais mal?

Modifier

Je Fount que le paramètre d'installation silen est ReportViewer.exe /q:a /c:"install.exe /q" comment puis-je poass le /q:a /c:"install.exe /q" au shell exécuter la commande?

+1

Je ne vois pas le paramètre d'installation en mode silencieux pour ReportViewer.exe. Vous devez ajouter un parémètre spécifique (par exemple/q ou/silent - vous devez vérifier quelle est la bonne pour cette application). Edit: J'ai vérifié: votre paramètre manquant est '/ Q'. Ainsi, la ligne sera: 'ShellExec ('', ExpandConstant ('{tmp} \ ReportViewer.exe'), '\ Q', ExpandConstant ('{tmp}'), SW_HIDE, ewWaitUntilTerminé, ErrorCode)' – RobeN

+0

je reçois un erreur de ligne de commande lorsque j'ai exécuté votre code 'ShellExec ('', ExpandConstant ('{tmp} \ ReportViewer.exe'), '\ Q', ExpandConstant ('{tmp}'), SW_HIDE, ewWaitUntilTerminated, ErrorCode)' – Smith

+0

Désolé pour une faute de frappe: devrait être '/ Q', pas' \ Q' :( – RobeN

Répondre

2

Il y a 2 choses que vous devriez regarder:

1er (grâce à TLama que repéré cette question)

La chaîne Key - il est redondant HKEY_LOCAL_MACHINE\ dans la chaîne Value.

Vous appelez HKLM succursale à RegQueryDWordValue(HKLM, key, 'Install', install);

La Key correcte devrait être:

key := 'SOFTWARE\Microsoft\ReportViewer\' + version;


2ème

Vous pouvez appeler l'installation silencieuse ReportViewer si vous connaissez les paramètres pour ligne de commande.

Comme vous le savez que vous utilisez shold /q:a /c:"install.exe /q", il vous suffit simplement d'ajouter en fonction ShellExec:

ShellExec('', ExpandConstant('{tmp}\ReportViewer.exe'), '/q:a /c:"install.exe /q"', ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, ErrorCode)

+0

merci de votre aide – Smith

Questions connexes