2008-09-09 5 views
7

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

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

ответ

6

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

Кстати, для 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 --update «имя_файла».

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

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

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

    2,4 Прекратить

  3. MYAPP.EXE --delete "FILENAME"

    3,1 Попробуйте удалить файл "имя_файла" каждые 500мс, пока успеха.

    3,2 Прекратить

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

Удача

+0

Именно это я и сделал. – Branko 2009-07-25 10:35:16

1

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

How To: ClickOnce deployment for unmanaged app with COM component in managed assembly

+0

Это похоже на среду, в которой вы можете указать свой манифест на компонент COM, который является управляемой сборкой. 100% неуправляемое решение не предоставило бы этому маленькому взлому любую комнату для работы. – 2010-02-23 21:34:40

3

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

Это от blog post от Brian Noyes, одного из главных авторов на ClickOnce и автора Smart Client Deployment with ClickOnce.

Если приложение является действительно наследство (т.е. VB6, MFC, ATL и т.д.), как и в неуправляемого кода исполняемого файла, то нет, вы не можете развернуть его как исполняемый файл через ClickOnce.

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