Передать несколько параметров встроенному сценарию Powershell в Advanced Installer - PullRequest
0 голосов
/ 30 апреля 2018

Я использую расширенный установщик для создания пакета MSI. Я хочу скопировать некоторые файлы и папки после завершения установки в «[APPDIR]» (я знаю, что могу сделать это с помощью добавления файлов и папок в раздел файлов и папок в расширенном установщике, но Я не хочу этого делать, потому что мои файлы и папки являются динамическими в каждой установке на компьютере клиента) Я пишу встроенный скрипт PowerShell, как показано ниже

> Param( [string] $source, [string] $dest )
$exclude = @('web.config')
> Get-ChildItem $source -Recurse -Exclude $exclude | Copy-Item
> -Destination {Join-Path $dest $_.FullName.Substring($source.length)}

и в разделе параметров я заполняю вот так "[SourceDir]Project", "[APPDIR]Project"

но это не работает. Почему?

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

С тех пор Аббас подтвердил, что проблема заключалась в синтаксисе командной строки (параметра) :

Раздел параметров - что передать сценарию PowerShell из Advanced Installer - был заполнен как:

"[SourceDir]Project", "[APPDIR]Project"  # !! WRONG, due to the comma

тогда как должно было быть:

"[SourceDir]Project" "[APPDIR]Project"  # OK: *space-separated* arguments

Вызов сценариев / функций / командлетов в PowerShell работает так же, как в оболочках , а не в языках программирования; то есть вы должны разделять передаваемые аргументы с помощью пробелов .

И наоборот, использование , между токенами создает массив , который передается как single аргумент.

Из PowerShell запустите Get-Help about_Command_Syntax для получения дополнительной информации.

0 голосов
/ 30 апреля 2018

Зависит от того, нужно ли вам больше деталей. Каковы параметры выполнения для пользовательского действия PS?

Вы проверили подробный журнал , чтобы убедиться, что параметры переданы правильно?

Ваше пользовательское действие должно быть запланировано как отложенное без олицетворения, поэтому оно выполняется после того, как папка APPDIR создана пакетом установки, и у него есть все права на запись в этом месте.

Кроме того, вы должны добавить откат и удалить пользовательские действия для очистки файлов, так как при удаленной или отмененной / неудачной установке эти ресурсы не будут очищаться установщиком Windows.

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