Можно ли развернуть собственное приложение Delphi с помощью ClickOnce?

StackOverflow https://stackoverflow.com/questions/51686

  •  09-06-2019
  •  | 
  •  

Вопрос

Можно ли развернуть собственное приложение Delphi с помощью ClickOnce без заглушки C# exe, которая будет использоваться для запуска приложения Delphi?

Тот же вопрос относится к VB6, C++ и другим собственным приложениям Windows.

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

Решение

Лично я создаю свой собственный механизм, запускающий процесс самообновления, когда временная метка моего приложения не синхронизирована с сервером.Не слишком сложно, но это не простая задача.

Кстати, для Delphi можно воспользоваться сторонней помощью:

http://www.tmssoftware.com/site/wupdate.asp

ОБНОВЛЕНО:

Для моей реализации:

MyApp.EXE будет работать в трех разных режимах.

  1. MyApp.EXE без каких-либо аргументов.Обычно это запускает приложение.

    1.1 Самое первое, что он делает, это проверяет свое собственное время файла на сервере.

    1.2 Если требуется обновление, обновленный файл будет загружен в файл с именем «MyApp-YYYY-MM-DD-HH-MM-SS.exe».

    1.3 Затем он вызывает «MyApp-YYYY-MM-DD-HH-MM-SS.exe» с аргументом команды.

    MyApp-YYYY-MM-DD-HH-MM-SS.exe  --update MyApp.EXE
    

    1.4 Закройте это приложение.

    1.5 Если обновление не требуется, то приложение запустится нормально с версии 1.1.

  2. MyApp.EXE --обновить «ИМЯ ФАЙЛА».

    2.1 Попробуйте копировать себя в «FILENAME» каждые 100 мс до достижения успеха.

    2.2 Вызвать «FILENAME» в случае успеха

    2.3 Вызовите «FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe», чтобы удалить себя.

    2.4 Завершить

  3. MyApp.EXE --удалить «ИМЯ ФАЙЛА»

    3.1 Попробуйте удалять файл «FILENAME» каждые 500 мс до достижения успеха.

    3.2 Прекращение действия

Я уже использую эту схему для своего приложения уже 7 лет и она работает хорошо.Отладка может быть весьма болезненной, если что-то идет не так, поскольку шаги включают в себя множество процессов.Я предлагаю вам вести журнал трассировки, чтобы упростить устранение неполадок.

Удачи

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

Нет, точкой входа в ваше приложение должен быть управляемый код.

Это из Сообщение блога Брайан Нойес, один из главных авторов ClickOnce и автор Развертывание интеллектуального клиента с помощью ClickOnce.

Если ваше приложение ДЕЙСТВИТЕЛЬНО устаревшее (т.VB6, MFC, ATL и т. д.), как в исполняемом файле неуправляемого кода, то нет, вы не сможете развернуть его как исполняемый файл через ClickOnce.

Принятым обходным решением является exe-файл-заглушка управляемого кода, который запускает основной exe-файл.

Я не уверен на 100%, можно ли это сделать без заглушки, но эта статья может дать некоторое представление:

Как:Развертывание ClickOnce для неуправляемого приложения с COM-компонентом в управляемой сборке

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