Установить каталог установки для установщика MSI с манипуляциями со строками

Я создаю установщик MSI для программы и хочу позволить людям обновлять свою установку вместо того, чтобы всегда удалять / переустанавливать.

Я получил большую часть этого, но теперь я хочу, чтобы TARGETDIR (или каталог установки) автоматически находился там, где пользователь ранее установил приложение.

В Visual Studio в разделе «Условия запуска» -> «Поиск целевой машины» я нахожу запись реестра с именем ISUPGRADE, которая содержит ранее установленное местоположение (если оно установлено), но к нему добавлен файл /bin/XXXX.dll. Я хочу удалить конец этой строки и установить его как TARGETDIR, чтобы обновление было установлено там.

Я могу установить статическую строку как TARGETDIR (в CustomActions и ссылаясь на действие в InstallExecuteSequence и InstallUISequence), но я застрял в том, как установить ее с моей переменной.

Как я могу это сделать? Я использую Visual Studio для создания файла .msi и сценария Powershell (Orca для ручного / тестового редактирования) для внесения изменений в файл.


person user1586574    schedule 27.02.2018    source источник
comment
По сути, дубликат установочных файлов stackoverflow.com/questions/48273612/   -  person PhilDW    schedule 01.03.2018
comment
Похоже, но немного по-другому. Похоже, они хотели получить значение реестра, у меня уже есть значение, и мне просто нужно немного изменить строку. В итоге я использовал настраиваемый тип действия 38 (встроенный VBscript) для редактирования строкового значения, прежде чем использовать его для установки моего TARGETDIR   -  person user1586574    schedule 03.03.2018


Ответы (1)


Разделенный путь

Командлет Split-Path возвращает только указанную часть пути, например родительскую папку, подпапку или имя файла.

Get-Help Split-Path

person ps1psm1    schedule 27.02.2018
comment
Спасибо, это выглядит полезным, но я не думаю, что смогу сделать это в сценарии PowerShell. Мне нужно, чтобы это запускалось в самом установщике, чтобы он получил ранее установленный каталог на компьютере пользователя. Сценарий PowerShell просто редактирует файл .msi локально на моем компьютере перед его публикацией. - person user1586574; 27.02.2018