Файлы не установлены при выполнении пользовательских действий в WIX - PullRequest
2 голосов
/ 23 сентября 2010

Я пишу файл WXS для пакета, который я хочу установить. Для простоты, скажем, я хочу установить 1 файл, а затем хочу выполнить команду для него (в моем случае это открытый ключ GPG, и я хочу импортировать его после завершения установки). Вот соответствующие части моего файла WXS:

<CustomAction Id="ImportKey" Directory="INSTALLDIR"
              ExeCommand="[SystemFolder]cmd.exe /C gpg --import keyfile.key"
              Return="check" />

<!-- Install file keyfile.key into C:\GnuPG -->
<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="INSTALLDIR" Name="GnuPG">
        <Component Id="GnuPGConfiguration" Guid="E9469F1C-A875-1014-A3B3-DEF3264B13C4">
            <File Name="keyfile.key" Id="KeyfileKey" />
        </Component>
    </Directory>
</Directory>

<Feature Id="GnuPGConfiguration" Level="1" Title="GnuPG Configuration">
    <ComponentRef Id="GnuPGConfiguration" />
</Feature>

<!-- Run custom action after files are installed -->
<InstallExecuteSequence>
    <Custom Action="ImportKey" After="InstallFiles">NOT Installed AND NOT PATCH</Custom>
</InstallExecuteSequence>

Я могу успешно построить MSI. При установке я использую msiexec и включаю ведение журнала. Там говорится, что при пользовательском действии происходит сбой установки, и в журнале находится правильная команда. Запуск его вручную работает. Если я закомментирую выполнение команды, файл будет установлен в правильном месте (C: \ GnuPG \ keyfile.key существует после установки).

Вместо запуска команды GPG, я попытался запустить dir ant, перенаправив вывод в файл. Просматривая его, я вижу, что keyfile.key отсутствует среди файлов в C: \ GnuPG. Похоже, что команда запускается до установки файла.

Есть идеи, что я делаю не так?

1 Ответ

6 голосов
/ 24 сентября 2010

Вам необходимо прочитать и понять:

Этапы установки и параметры выполнения в сценарии для пользовательских действий в установщике Windows

Вы обнаружите, что нуждаетесь в

<CustomAction ... Execute="deferred" and Impersonate="no" ... />

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

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