msiexe c не выполняет запрос к указанному пути - PullRequest
1 голос
/ 16 февраля 2020

Эта проблема уже обсуждалась здесь, но не дала четкого ответа, поэтому она поднимается снова.

Я пытаюсь извлечь содержимое MSI-файла следующим образом:

function script:Export-MsiContents
{
[CmdletBinding()]
param
(
    [Parameter(Mandatory = $true, Position = 0)]
    [ValidateNotNullOrEmpty()]
    [ValidateScript({Test-Path $_})]
    [ValidateScript({$_.EndsWith(".msi")})]
    [String] $MsiPath,

    [Parameter(Mandatory=$false, Position = 1)]
    [String] $TargetDirectory
)

if(-not($TargetDirectory))
{
    $currentDir = [System.IO.Path]::GetDirectoryName($MsiPath)
    Write-Warning "A target directory is not specified. The contents of the MSI will be extracted to the location, $currentDir\Temp"

    $TargetDirectory = Join-Path $currentDir "Temp"
}

$MsiPath = Resolve-Path $MsiPath

Write-Verbose "Extracting the contents of $MsiPath to $TargetDirectory"
Start-Process "MSIEXEC" -ArgumentList "/a $MsiPath /qn TARGETDIR=$TargetDirectory" -Wait -NoNewWindow
}

После вызова я получаю всплывающее окно. Пожалуйста, взгляните на прикрепленный скриншот enter image description here

А извлечение файла MSI отсутствует.

1 Ответ

1 голос
/ 16 февраля 2020

1. Экранирование . Экранирующим символом в PowerShell является серьезный акцент : ` ( ASCII : 96, Unicode : U + 0060 - я думаю). Использование серьезного акцента в программировании . Попробуйте убежать следующим образом:

Start-Process "MSIEXEC" -ArgumentList "/a `"C:\my setup.msi`" /qn TARGETDIR=`"C:\Extract here`"" -Wait -NoNewWindow

2. «Stop Parsing» : PSv3+ предлагает --%, символ остановки парсинга ( больше от ss64. ком ). Остальная часть командной строки передается во внешнюю утилиту как есть, за исключением возможного расширения переменных среды стиля% ...%:

# Everything after --% is passed as-is.
msiexec --% /a "C:\my setup.msi" /qn TARGETDIR="C:\Extract here"

Я не эксперт по Powershell. Вышеуказанное основано на:


Другие ссылки :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...