Можно ли развернуть собственное приложение Delphi с помощью ClickOnce?
-
09-06-2019 - |
Вопрос
Можно ли развернуть собственное приложение Delphi с помощью ClickOnce без заглушки C# exe, которая будет использоваться для запуска приложения Delphi?
Тот же вопрос относится к VB6, C++ и другим собственным приложениям Windows.
Решение
Лично я создаю свой собственный механизм, запускающий процесс самообновления, когда временная метка моего приложения не синхронизирована с сервером.Не слишком сложно, но это не простая задача.
Кстати, для Delphi можно воспользоваться сторонней помощью:
http://www.tmssoftware.com/site/wupdate.asp
ОБНОВЛЕНО:
Для моей реализации:
MyApp.EXE будет работать в трех разных режимах.
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.
MyApp.EXE --обновить «ИМЯ ФАЙЛА».
2.1 Попробуйте копировать себя в «FILENAME» каждые 100 мс до достижения успеха.
2.2 Вызвать «FILENAME» в случае успеха
2.3 Вызовите «FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe», чтобы удалить себя.
2.4 Завершить
MyApp.EXE --удалить «ИМЯ ФАЙЛА»
3.1 Попробуйте удалять файл «FILENAME» каждые 500 мс до достижения успеха.
3.2 Прекращение действия
Я уже использую эту схему для своего приложения уже 7 лет и она работает хорошо.Отладка может быть весьма болезненной, если что-то идет не так, поскольку шаги включают в себя множество процессов.Я предлагаю вам вести журнал трассировки, чтобы упростить устранение неполадок.
Удачи
Другие советы
Нет, точкой входа в ваше приложение должен быть управляемый код.
Это из Сообщение блога Брайан Нойес, один из главных авторов ClickOnce и автор Развертывание интеллектуального клиента с помощью ClickOnce.
Если ваше приложение ДЕЙСТВИТЕЛЬНО устаревшее (т.VB6, MFC, ATL и т. д.), как в исполняемом файле неуправляемого кода, то нет, вы не сможете развернуть его как исполняемый файл через ClickOnce.
Принятым обходным решением является exe-файл-заглушка управляемого кода, который запускает основной exe-файл.
Я не уверен на 100%, можно ли это сделать без заглушки, но эта статья может дать некоторое представление:
Как:Развертывание ClickOnce для неуправляемого приложения с COM-компонентом в управляемой сборке