Выключить DLL в приложении один раз? - PullRequest
2 голосов
/ 05 мая 2011

У меня есть приложение для однократного нажатия, которое по определенным причинам не может переиздать новую версию.В то же время у меня есть DLL, которая заменит одну из существующих библиотек в приложении.Можно ли просто зайти в папку «Файлы приложений» и выключить ее?Когда-то dll в клике, кажется, в другом формате, [файл] .dll.deploy.Могу ли я как-то преобразовать dll, который у меня есть, в этот формат и позволить ему заменить существующий?

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

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

Я бы открыл ваши манифесты в MageUI и попытался бы обновить их таким образом.

Если вы не увеличите номер версии, никто не получит новый файл, если он не удалит / переустановит. Есть ли какая-то особая причина, по которой вы не можете просто переиздать?

1 голос
/ 08 марта 2012

Я боролся с этим пару дней, это можно сделать, но это сложно, с этим решением ClickOnce по-прежнему сканирует все файлы и показывает индикатор выполнения, но только загружает и обновляет изменения.

Вот процесс, который я написал, чтобы применить этот метод исправления ...

Обратите внимание, что этот процесс должен выполняться с точной копией Click после развертывания для обновления.

В папке «Файлы приложения»…

  1. открыть .exe.manifest, используя mageui (версия 3.5 или более поздняя, ​​при условии VS2010)
  2. Изменить номер версии

  3. Заменить исправленные файлы Примечание: файлы переименованы с именем файла .deploy E.g. Control.DLL становится control.DLL. Деплой

  4. Подпишите и сохраните файл с вашим файлом PFX

В корне пути

  1. Открыть файл приложения с помощью mageui (версия 3.5 или выше)
  2. Изменить номер версии
  3. Изменить минимально необходимый номер версии
  4. Выберите измененный выше exe.manifest
  5. Подписать и сохранить файл

Скопировать .application в папку «Файлы приложения» * Примечание: этот шаг не является строго обязательным, он просто поддерживает файлы резервных копий.

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

...