Возможно ли развернуть нативное приложение Delphi с помощью ClickOnce? - PullRequest
9 голосов
/ 09 сентября 2008

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

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

Ответы [ 3 ]

8 голосов
/ 19 июля 2009

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

Кстати, для Delphi вы можете воспользоваться какой-нибудь сторонней справкой:

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

ОБНОВЛЕНИЕ:

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

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

  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 - обновление "FILENAME".

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

    2.2 Вызвать «FILENAME», когда он успешен

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

    2,4 Завершить

  3. MyApp.EXE - удалить "FILENAME"

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

    3,2 Завершить

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

Удачи

3 голосов
/ 30 сентября 2008

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

Это из сообщения в блоге Брайана Нойеса, одного из главных авторов ClickOnce и автора Развертывание Smart Client с ClickOnce .

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

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

1 голос
/ 09 сентября 2008

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

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

...