visual c++ - InnoSetup Script installing VC redistributables and registering VC OCX resulting in "RegSrv32 failed with exit code 0x1" -
my innosetup script needs install vc redistributables (vcredist_x86.exe) registers ocx relying on redist package. wasn't able have package installed prior regsrv32 call, on virgin system results in "regsrv32 failed exit code 0x1" error (which ignore , run setup again correctly register ocx). how can make sure redist package installed before registering?
; script generated inno setup script wizard. ; see documentation details on creating inno setup script files! [setup] appname=myapp appvername=myapp v1.0 diskspanning=no apppublisher=me apppublisherurl=http://www.example.com appsupporturl=http://www.example.com appupdatesurl=http://www.example.com defaultdirname={pf}\myapp usepreviousappdir=yes defaultgroupname=myapp outputbasefilename=setup outputdir=.\myappsetup minversion=5.0 [tasks] name: desktopicon; description: create &desktop icon; groupdescription: additional icons:; minversion: 4,4 [files] ;source: "c:\program files (x86)\microsoft visual studio 9.0\vc\redist\x86\microsoft.vc90.crt\msvcm90.dll"; destdir: {app}; ;source: "c:\program files (x86)\microsoft visual studio 9.0\vc\redist\x86\microsoft.vc90.crt\msvcp90.dll"; destdir: {app}; ;source: "c:\program files (x86)\microsoft visual studio 9.0\vc\redist\x86\microsoft.vc90.crt\msvcr90.dll"; destdir: {app}; ;source: "c:\program files (x86)\microsoft visual studio 9.0\vc\redist\x86\microsoft.vc90.atl\atl90.dll"; destdir: {app}; ;source: "c:\program files (x86)\microsoft visual studio 9.0\vc\redist\x86\microsoft.vc90.mfc\mfc90.dll"; destdir: {app}; ;source: "c:\program files (x86)\microsoft visual studio 9.0\vc\redist\x86\microsoft.vc90.mfcloc\mfc90deu.dll"; destdir: {app}; ;source: "c:\program files (x86)\microsoft visual studio 9.0\vc\redist\x86\microsoft.vc90.openmp\vcomp90.dll"; destdir: {app}; source: .\systemfiles\vcredist_x86.exe; destdir: {tmp}; flags: deleteafterinstall; ;-> [run] !! source: .\release\myapp.exe; destdir: {app}; flags: ignoreversion source: .\release\myapphelper.ocx; destdir: {app}; flags: regserver restartreplace [icons] name: {group}\easycash&tax; filename: {app}\myapp.exe name: {userdesktop}\easycash&tax; filename: {app}\myapp.exe; minversion: 4,4; tasks: desktopicon [run] filename: {tmp}\vcredist_x86.exe; parameters: "/q:a /c:""vcredi~3.exe /q:a /c:""""msiexec /i vcredist.msi /qn"""" """; flags: runhidden shellexec waituntilterminated; filename: {app}\myapp.exe; description: launch myapp; flags: nowait postinstall skipifsilent
for convinience, here code pastebin tlama referred me to:
[setup] appname=my program appversion=1.5 defaultdirname={pf}\my program [files] source: ".\systemfiles\vcredist_x86.exe"; flags: dontcopy [code] function isruntimeinstalled: boolean; begin result := false; // here statement check whether runtime installed // , return true if so; see e.g. http://stackoverflow.com/q/11137424/960757 end; function preparetoinstall(var needsrestart: boolean): string; var exitcode: integer; begin // if runtime not installed if not isruntimeinstalled begin // extract redist temporary folder extracttemporaryfile('vcredist_x86.exe'); // run redist temp folder; if fails, return handler error text if not exec(expandconstant('{tmp}\vcredist_x86.exe'), '', '', sw_show, ewwaituntilterminated, exitcode) begin // return error text result := 'setup failed install vc++ runtime. exit code: ' + inttostr(exitcode); // exit function; makes sense if there further prerequisites install; in // particular example nothing because function exits anyway, pointless here exit; end; end; end;
Comments
Post a Comment