Ошибка пользовательского действия установщика Windows 1631 - PullRequest
4 голосов
/ 07 июня 2011

Я создаю msi-installer для продукта, и мне нужно запустить веб-URL в браузере после установки.Я использую WIX 3.5 для создания установщика (но это, вероятно, не важно).Пример, который я нашел в http://www.tramontana.co.hu/wix/lesson5.php#5.2, не работает - в журнале программы установки написано

"Действие завершено 15:27:30: LaunchBrowser. Возвращаемое значение 1631.".

Я видел много сообщений об этой проблеме в Интернете, но никто не предлагает решения (кто-то нашел проблему в мультиязычности, кто-то связался с Microsoft, чтобы решить эту проблему).

Я могу только догадываться, что проблема где-то в безопасности Windows7 (я столкнулся с проблемой с этим).Может быть, установщику Windows запрещено запускать exe-файлы (я пробовал много других примеров с другими exe-файлами, но у всех был тот же результат).

У кого-нибудь есть общее решение?

Ответы [ 2 ]

1 голос
/ 23 октября 2012

Полагаю, проблема была действительно в безопасности UAC. Для предоставления пользовательских административных прав доступа мы должны сделать его отложенным, например:

<CustomAction Id="LaunchBrowser" Directory="TARGETDIR" Impersonate="no" Execute="deferred" ExeCommand="[BrowserExePath] [LaunchingUrl]" Return="check"/>

И я очень рекомендую эту запись в блоге о пользовательских действиях - это полностью изменило мое представление о них.

0 голосов
/ 03 мая 2019

Вот что я сделал для установки и удаления.

Сначала я также получил «Возвращаемое значение 1631» и провел много времени с безопасностью UAC, повышением привилегий, Impersonate = «yes» и «Выполнить».= "deferred", который не работал.

Но в конце концов это было исправлено очень просто, когда я правильно установил Directory = "TARGETDIR", а не BinaryKey = "WixCA"

<Product>

...

<CustomAction Id="LaunchBrowserInstall" Directory="TARGETDIR" Execute="immediate" Impersonate="yes" Return="asyncNoWait" ExeCommand="explorer.exe https://www.example.com/post_install/" />

    <CustomAction Id="LaunchBrowserUninstall" Directory="TARGETDIR" Execute="immediate" Impersonate="yes" Return="asyncNoWait" ExeCommand="explorer.exe https://www.example.com/post_uninstall/" />

    <InstallExecuteSequence>
        <Custom Action="LaunchBrowserInstall" After="InstallFinalize">NOT Installed AND NOT REMOVE</Custom>
        <Custom Action="LaunchBrowserUninstall" After="InstallFinalize">REMOVE ~= "ALL"</Custom>
    </InstallExecuteSequence>

...

</Product>
...