Необходимо создать скомпилированное приложение Delphi, которое может создать отдельное скомпилированное приложение. - PullRequest
2 голосов
/ 30 августа 2010

Мне нужно создать приложение, которое позволит пользователям выбирать некоторые параметры, нажимать кнопку, и создается отдельное скомпилированное приложение. Это возможно? Я использую Delphi 7 и 2010.

Спасибо за ответы. Вот немного больше информации.

Это должно быть графическое приложение и создание графического приложения.

Я хочу, чтобы пользователь запустил «Приложение A» (которое я сделал изначально), чтобы иметь возможность выбрать некоторые параметры (извиняюсь за секретность. :) затем используйте программу для создания «Приложения Б.» «Приложение B» может затем распространяться среди конечных пользователей, а «Приложение B» - это отдельный исполняемый файл, который включает в себя скомпилированное приложение и данные конфигурации. Мне все равно, как, но мне нужно, чтобы приложение B было единственным исполняемым файлом.

Мне даже не нужно было бы использовать Delphi для финального скомпилированного приложения. Если есть какой-то «псевдокомпилятор», который я могу вызвать из Delphi, который объединит предварительно скомпилированный exe и отдельный файл конфигурации в один исполняемый файл. Это тоже хорошо бы сработало.

Спасибо за ответы и помощь.

Спасибо.

Ответы [ 5 ]

6 голосов
/ 30 августа 2010

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

Позволяет вызвать родительское приложение P и дочернее приложение C. Также давайте предположим, что любой параметр C может быть суммирован в файле конфигурации (XML / INI и т. Д.). В итоге я сделал:

  1. Создать P и C. Вставить C в данные ресурса P.
  2. Когда пользователь нажимает кнопку после выбора параметров, P извлекает C из данных своего ресурса.
  3. Создан файл XML, содержащий параметры, выбранные пользователем, и вставлен в данные ресурса C.

Таким образом, всякий раз, когда C будет работать, он будет использовать параметры, указанные в XML-файле, вставленном в него . Это выглядит сложным и хакерским, но надежным и простым. Зайдите в «Delphi Embedded Resources in exe», и вы найдете множество статей, которые можно сделать выше.

2 голосов
/ 30 августа 2010

Учитывая, что компилятор Delphi не может быть распространен, одним из решений, если у пользователя нет копии Delphi, может быть использование механизма сценариев (т. Е. RemObjects PascalScript, но есть другие), создание кода для него и встраиваниеэтот код (т.е. внутри ресурса) в исполняемом файле, который будет выполнять его при запуске.

1 голос
/ 31 августа 2010

Создайте отдельный исполняемый файл-заглушку, который реализует всю необходимую логику и считывает свою конфигурацию из собственных локальных ресурсов (посмотрите, как класс TResourceStream поможет вам загрузить ресурс во время выполнения).

Включите этот исполняемый файл-заглушку в качестве ресурса RCDATA в ресурсы основного приложения при его компиляции.

Во время выполнения основное приложение может извлекать исполняемый файл заглушки из своих ресурсов, когда это необходимо, сохранять его на диск и вставлять необходимые данные конфигурации в ресурсы заглушки с помощью функции WinR API UpdateResource ().

1 голос
/ 30 августа 2010

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

Когда все настроено, просто вызовите компилятор командной строки (DCC32.EXE) с правильными параметрами и путями.

Вы можете использовать два подхода для этого:

  • Вызов ShellExecute
  • Вызов CreateProcess

У вас будет больше контроля над выполнением с CreateProcess. Также вам придется следить за юридическими проблемами и лицензиями, если вы планируете использовать компилятор таким образом.

0 голосов
/ 30 августа 2010

Не зная больше о том, почему вы думаете, что вам нужно это сделать, я полагаю, вам на самом деле не нужно это делать. Учитывая заявленные требования, у меня просто было бы одно приложение, написанное на Delphi, которое проверяет наличие данных конфигурации (INI-файл, реестр и т. пользователи выбирают некоторые параметры, нажимают кнопку ". Затем параметры сохраняются в INI-файле, и остальная часть программы продолжается, используя эти параметры.

С другой стороны, я бы использовал некоторые сценарии на паскале, например, предоставленные TMS.

Если вы ищете способ запустить собственные версии приложений, возможно, используйте Inno Setup с шагом ResHacker. соберите требования в Inno, выложите ваш .exe во временный каталог, используйте ResHacker для изменения .exe, скопируйте его в папку программы.

...