を使用して機能をインストールします。チェックと私は.BATファイル使用して、プロセスの下に自動化しようとしているバッチファイル
注:掲載コードの下は適切ではありませんが、彼らは私が試したコードです。
- ファイルがインストールされていないことをCMDホストに書き込みをインストールしていない場合は、プログラムが
- をインストールされている場合は、最初のチェック。
- インストールされていない場合は、機能をインストールしてください。
- 最後に、cmd console hostのインストールが成功したか、失敗しました。
の.batコード:
@echo off
title Check and Install MS Visual C++ Redistributable 2015
echo Checking MS Visual C++ Redistributable 2015 .....
@ECHO OFF
REM LOG LOCATION
SET LOGPATH=D:\Tool\InstallC++Log\
IF NOT EXIST %LOGPATH% MD %LOGPATH%
SET ThisScriptsDirectory=%~dp0
REM PowerShellScriptPath=C:\temp\Install_Program_MS_Visual_C++_x86.ps1
SET PowerShellScriptPath=C:\temp\Checking_Program.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'"; >> %LOGPATH%%INSTALLPATCH%.log
pause
C:以下\ tempに\のChecking_Program.ps1コード:
$tempdir = Get-Location
$tempdir = $tempdir.tostring()
$appToMatch = 'Microsoft Visual C++ 2015 Redistributable (x86)'
$msiFile = $tempdir+"\microsoft.interopformsredist.msi"
$msiArgs = "-qb"
function Get-InstalledApps
{
if ([IntPtr]::Size -eq 4) {
$regpath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
}
else {
$regpath = @(
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
}
Get-ItemProperty $regpath | .{process{if($_.DisplayName -and $_.UninstallString) { $_ } }} | Select DisplayName, Publisher, InstallDate, DisplayVersion, UninstallString |Sort DisplayName
}
$result = Get-InstalledApps | where {$_.DisplayName -like $appToMatch}
If ($result -eq $null) {
Write-Host "Could not find the Microsoft Visual C++ 2015 Redistributable (x86). Installing the Program..."
}
}
この後、私は、コマンドプロンプトのエントリを見てみたいもの機能のインストール。以下PowerShellのコードのインストール
@echo off
title Installing MS Visual C++ Redistributable 2015
echo .....
@ECHO OFF
REM LOG LOCATION
SET LOGPATH=D:\Tool\InstallC++Log\
IF NOT EXIST %LOGPATH% MD %LOGPATH%
SET ThisScriptsDirectory=%~dp0
REM PowerShellScriptPath=C:\temp\Install_Program_MS_Visual_C++_x86.ps1
SET PowerShellScriptPath=C:\temp\Checking_Program_Install.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'"; >> %LOGPATH%%INSTALLPATCH%.log
pause
:
は.batのコードをインストールしたらインストール
$computer = $env:COMPUTERNAME
$sourcefile = "C:\temp\C++\vc_redist.x86.exe"
Invoke-Command -ComputerName $computer -ScriptBlock {Start-Process 'C:\temp\C++\vc_redist.x86.exe' -ArgumentList /s -Verb runas -Wait }
を、私はその機能が正常にインストールされていると言って、コマンドプロンプトメッセージを取得する必要があります。助けてください 。
INSTALL.CMD
@ECHO off
TITLE Check and Install MS Visual C++ Redistributable 2015
SET LOGPATH=D:\Tool\InstallC++Log
IF NOT EXIST %LOGPATH% MD %LOGPATH%
SET PowerShellScriptPath=C:\Temp\Install.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -File "%PowerShellScriptPath%" >> %LOGPATH%\Redist.log
PAUSE
それは一度だけ呼び出される関数を宣言する必要があります:
なぜあなたは '' - コマンドを使用して「&PS1」 'の代わりにされています - ファイル "ps1" '? – TheIncorrigible1
再配布可能なインストールは、それ自身の上にインストールしないか、すでに存在する場合は無害に上書きするのに十分なほど巧妙ではありませんか? – Compo
@ TheIncorrigible1、私はそれを私自身で試しています、グーグルをチェックしています。私は.batファイルを準備することに気づいていません。私はこの.batファイルでプログラムをチェックし、存在しなければインストールしますが、cmdと実行可能ファイルを開くことでインタラクティブにします。 – DBOn