从sharefile下载和安装msi

时间:2017-06-02 19:18:34

标签: powershell windows-installer install silent sharefile

我正在尝试整合一个powershell脚本,从sharefile下载firefox msi并静默安装。

我终于让下载部分工作了。但是,安装没有。当我导航到我将firefox msi下载到(C:\,C:\ users \ public和我的桌面)的文件夹时,出现以下错误:

此应用无法在您的电脑上运行

无法打开此安装包。请与应用程序供应商联系,以验证这是一个有效的Windows安装程序包。

我从mozilla网站下载了exe文件,并从正面运动中下载了msi。

该软件所在的分享对网络上的每个人开放。

我对exe和msi都有相同的错误。

这是我目前的剧本:

#Download and Run MSI package for Automated install
$uri = "https://sharefile.com/app/#/home/shared/foe0295b-0fbf-4ad9-ad73-fc18d26ba705/FirefoxInstaller.msi"
$out = "c:\FireFoxInstaller.msi"
Invoke-WebRequest -uri $uri -OutFile $out
Start-Process -FilePath "msiexec.exe" -ArgumentList "/i $out /quiet /norestart /l c:\installlog.txt"

4 个答案:

答案 0 :(得分:0)

正如你所说,你有一个你选择的MSI,但我一直使用来自Frontmotion的MSI

当我这样做时,这有效,但请告诉我它是否适合你。

#Download and Run MSI package for Automated install
$uri = "http://hicap.frontmotion.com.s3.amazonaws.com/Firefox/Firefox-53.0.3/Firefox-53.0.3-en-US.msi"
$out = "c:\FireFoxInstaller.msi"

Function Download_MSI_FireFox_Installer{
Invoke-WebRequest -uri $uri -OutFile $out
$msifile = Get-ChildItem -Path $out -File -Filter '*.ms*' 
write-host "FireFox MSI $msifile "
}

Function Install_FireFox{
$FileExists = Test-Path $msifile -IsValid
$DataStamp = get-date -Format yyyyMMddTHHmmss
$logFile = '{0}-{1}.log' -f $msifile.fullname,$DataStamp
$MSIArguments = @(
    "/i"
    ('"{0}"' -f $msifile.fullname)
    "/qn"
    "/norestart"
    "/L*v"
    $logFile
)
If ($FileExists -eq $True)
{
Start-Process "msiexec.exe" -ArgumentList $MSIArguments -passthru | wait-process
write-host "Finished msi "$msifile
}

Else {Write-Host "File doesn't exists"}
}
Download_MSI_FireFox_Installer
Install_FireFox

答案 1 :(得分:0)

最近我遇到了类似的问题,我希望将HipChat部署到整个公司。主要区别在于我在下载之前检查软件是否已经安装并再次尝试安装,它非常简单并且与Windows 7和10兼容:

$file = 'HipChat-4.29.5.1662-win32.msi'
$link = "https://s3.amazonaws.com/hipchat-ops/hipchat4/windows/$file"
$soft_name = 'Hipchat'

$find = Get-WmiObject -Class Win32_Product -Filter "Name = `'$soft_name`'"

if ($find -eq $null) {

    $tmp = "$env:TEMP\$file"
    $client = New-Object System.Net.WebClient
    $client.DownloadFile($link, $tmp)

    msiexec /i $tmp /qn
    del $tmp
    echo "Tried installing $soft_name"

} else {
    echo "ERROR: $soft_name is already installed."
    echo $find
    exit 1
}

exit 0

答案 2 :(得分:0)

要获取最新版本的Firefox,请尝试以下操作(将Outfile替换为您自己的有效位置);

Invoke-WebRequest -Uri "https://download.mozilla.org/?product=firefox-msi-latest-ssl&os=win64&lang=en-GB" -Outfile c:\temp\firefox.msi

我要安装;

start /wait msiexec /i C:\temp\Firefox.msi /quiet

答案 3 :(得分:0)

我认为 $msifile 分配需要移到 Download_MSI_FireFox_Installer 函数之外,否则,我会收到 InstallFireFox 函数中路径为空的错误。