Вопрос

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

Я создал пользовательское действие 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. Я попытался установить файл как часть установки, вручную скопировать вставленный файл, ничего не сделал для файла ... в основном перепробовал все возможные комбинации.

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top