Как получить вывод из установщика MSI при вызове из процесса

#wix

#wix

Вопрос:

У меня есть приложение, в котором я вызываю установщик WIX MSI, используя System.Diagnostic.Process определенное нажатие кнопки.

Я передаю параметр установщику MSI с помощью командной строки.

Теперь то же значение параметра может быть обновлено конечным пользователем, используя UIDialog, доступный в установщике Wix MSI.

Из моего вызывающего кода, как я могу получить это обновленное значение после завершения установки?

Комментарии:

1. В качестве альтернативы, вы можете запросить его заранее из пользовательского интерфейса приложения и передать его как свойство MSI. См. msiexec -?

2. Спасибо, Том. Однако, как мне вернуть обновленное значение параметра обратно в вызывающий код.

3. Идея состояла бы в том, чтобы попросить в запускаемом приложении передать значения свойств в MSIS. запускать их в тихом или скрытом режиме. Но теперь, когда вы говорите, что данные содержат пароль, это не такая уж хорошая идея, потому что он будет зарегистрирован в виде обычного текста.

Ответ №1:

Запишите его в реестр во время установки, а затем прочитайте его из расположения реестра в вызывающем процессе. Таким образом, вы также можете загрузить значение, используемое при запуске обновления или удаления этого установщика. См. Сообщение в блоге Remember me здесь, в котором показано, как сохранить значение в реестре и прочитать его в установщике.

Комментарии:

1. Спасибо @Brian Sutherland, однако для меня этот параметр представляет собой строку подключения к базе данных, которая содержит конфиденциальную информацию, такую как пароль, поэтому мы не можем использовать реестр здесь. Вы рекомендуете какую-либо другую альтернативу?

2. Вы должны иметь возможность кодировать его перед записью в реестр. Запишите закодированное значение в реестр и расшифруйте его, когда вам понадобится строка connections. Мы делаем это в нашем продукте для строки информации о подключении к БД. Запишите его закодированную версию в реестр, затем прочитайте ее и расшифруйте, когда нам нужно подключиться к базе данных.

3. Если цель состоит в том, чтобы скрыть информацию, которую некоторые программы используют, от других программ, запускаемых под учетной записью пользователя, API защиты данных ( DPAPI ) может значительно усложнить их работу.