2016-07-14 63 views
1

私はバッチファイルを一日中作業していましたが、GPO(別の日、別の質問)で作業することはできません。だから私はすべてのコンピュータで手動で行うことにしました。私には2つのexeと1つのMSIがあります。 exeは完全にうまく動作します。彼らはインストールされ、それはすべて動作します。しかし、MSIはそうではありません。それは私にエラーを与える:インストールパッケージを開くことができませんでした。パッケージが存在し、アクセスできることを確認するか、アプリケーションベンダーに問い合わせて、これが有効なWindowsインストーラパッケージであることを確認します。インストールパッケージを開くことができませんでした。バッチファイル

ネットワーク共有にアクセスしてそこから使用すると、正常に動作します。だから私のコードに問題があるはずです。ここで

コードです:

@echo off 
IF NOT EXIST "C:\Program Files (x86)\Citrix\ICA Client\" (
pushd "\\KOPI-DC01\ACCURO Cloudwerx\ACCURO\1\" 
.\CitrixReceiver-4.4.1000.exe /silent 
) 
IF NOT EXIST "C:\Program Files (x86)\triCerat\Simplify Printing\ScrewDrivers Client v4\" (
pushd "\\KOPI-DC01\ACCURO Cloudwerx\ACCURO\2\" 
msiexec.exe /i ".\Screwdriver.msi" 
) 
IF NOT EXIST "C:\Program Files\Cloudwerx\CloudwerxPlugin\" (
pushd "\\KOPI-DC01\ACCURO Cloudwerx\ACCURO\3\" 
.\cloudwerx-setup.exe /silent 
) 
pause 

すべてのヘルプは大、おかげでいただければ幸いです。

答えて

1

現在の場所(pushdコマンドで設定)と作業ディレクトリ(pushdコマンドの影響を受けていない)の間にpowershellの違いがあると推測しています。あなたは[Environment]::CurrentDirectoryプロパティを使用してPowerShellプロセスの作業ディレクトリを見ることができます:おそらく何が起こっているのか

# C:\> [Environment]::CurrentDirectory = "c:\"  
# C:\> [Environment]::CurrentDirectory 
c:\  
# C:\> pushd C:\Temp  
# C:\Temp> [Environment]::CurrentDirectory 
c:\  
# C:\Temp> Get-Location 

Path                                
----                                
C:\Temp 

は、作業ディレクトリ(すなわち[Environment]::CurrentDirectory)とないの呼び出しで現在のPowerShellの場所を使用します。msiexec.exeであるということです。私はmsiexecの完全なパスを指定するだけです:

msiexec.exe /i "\\KOPI-DC01\ACCURO Cloudwerx\ACCURO\2\\Screwdriver.msi" 
関連する問題