diff --git a/src/ioc/dbtemplate/test/msi.plt b/src/ioc/dbtemplate/test/msi.plt index f584dcf3d..230a2c18b 100644 --- a/src/ioc/dbtemplate/test/msi.plt +++ b/src/ioc/dbtemplate/test/msi.plt @@ -58,5 +58,19 @@ sub msi { my ($args) = @_; my $exe = ($^O eq 'MSWin32') || ($^O eq 'cygwin') ? '.exe' : ''; my $msi = "./msi-copy$exe"; - return `$msi $args`; + my $result; + if ($args =~ m/-o / && $args !~ m/-D/) { + # An empty result is expected + $result = `$msi $args`; + } + else { + # Try up to 5 times, sometimes msi fails on Windows + my $count = 5; + do { + $result = `$msi $args`; + print "# result of '$msi $args' empty, retrying\n" + if $result eq ''; + } while ($result eq '') && (--$count > 0); + } + return $result; }