C # настраиваемое действие в Wix - PullRequest
11 голосов
/ 31 июля 2009

Когда мое приложение удалено, сервер должен быть уведомлен, чтобы он мог освободить лицензионный ключ, назначенный клиенту. Это делается с помощью вызова веб-службы.

Я создал пользовательское действие C #, которое делает это. Проблема в том, что деинсталлятор перестает говорить, что не может найти DLL.

Журнал ошибок для MSI содержит следующую ошибку:

Ошибка 1723. Проблема с этот пакет установщика Windows. DLL требуется для этой установки, чтобы завершить не может быть запущен. Обратитесь в службу поддержки Поставщик персонала или упаковки. действие ReadLicenseKeyFromFile, запись: ReadLicenseKey, библиотека: C: \ Windows \ Installer \ MSI4F42.tmp

У меня есть функция ReadLicenseKey, помеченная как пользовательское действие. Настраиваемое действие называется ReadLicenseKeyFromFile.

<Custom Action="ReadLicenseKeyFromFile" After="InstallInitialize">
    REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE
</Custom>

<CustomAction Id="ReadLicenseKeyFromFile" BinaryKey="UnInstallCA.CA.dll" DllEntry="ReadLicenseKey" Execute="immediate" Return="check" />

<Binary Id="UnInstallCA.CA.dll" SourceFile="$(var.UnInstallCA.TargetDir)UnInstallCA.CA.dll" />

Проект настраиваемого действия выводит файл .CA.dll. Я попытался установить файл как часть установки, вручную скопировать вставленный файл, ничего не сделал для файла ... в основном перепробовал все возможные комбинации.

Там должно быть что-то, чего мне не хватает, поэтому, пожалуйста, помогите.

Ответы [ 2 ]

11 голосов
/ 03 августа 2009

Извините, что потратил впустую время каждого за это.

Решение было слишком простым. Я забыл разместить атрибут [CustomAction] в этом конкретном методе. Поэтому, хотя это было последнее действие, которое я написал в своем файле CustomAction.cs, оно было первым, которое было вызвано в InstallExecuteSequence. И из-за этого меня сбило с толку мысль, что он не может найти файл. Ну, это так же как тот факт, что я, должно быть, был очень сонным ...

Во всяком случае, во время поиска ответа мне удалось найти много хороших ресурсов, особенно серии Алекса Шевчука на Wix . Еще я понял, что мне не нужно устанавливать dll-файл с настроенными действиями. Я просто ссылаюсь на него из моего проекта Wix и указываю путь к нему. DLL включается в настройку и оттуда направляется при вызове пользовательских действий по удалению.

0 голосов
/ 31 июля 2009

Ваш UnInstallCA.CA.dll копируется на целевой компьютер во время установки? Кажется, что это не там при удалении.

Если он туда попал - может ли он бежать? (попробуйте запустить его с целевой машины, чтобы посмотреть, сможет ли он сделать то, что должен делать - возможно, вам нужно будет отправить какую-то другую dll, которую вы используете, с этой - или, возможно, какой-нибудь распространяемый пакет)

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