Как переименовать exe файл

Скажем, у меня есть универсальное приложение для вертикального рынка, и я хочу упаковать его в виде двух отдельных программ aaa.exe и bbb.exe. Есть ли способ использовать компоновщик Delphi для создания файла EXE/DLL, который не имеет того же имени, что и DPR?

Я не могу просто переименовать файл, потому что получаю эту ошибку

    bbb.exe - Unable to to locate component
      This application has failed to start because aaa.exe was not found. 
      Re-installing the application may fix this problem.
 

Теперь вообще я могу переименовать экзешник, но не этот. Спасибо за комментарии, указывающие на мою тупость в этом отношении. Есть проблема, только явно не обычная, может быть, даже не обязательно связанная с Delphi.

Я использую Delphi 7 (если это возможно в 2007/2009 годах, это было бы здорово, потому что мне нужно больше корма для обновления)


person Peter Turner    schedule 11.12.2008    source источник
comment
Как именно вы пытаетесь переименовать файл, чтобы вывести это сообщение об ошибке? Какой инструмент/команду вы используете? Вывод вообще не выглядит знакомым.   -  person Oliver Giesen    schedule 12.12.2008
comment
Это окно сообщения Windows, я получаю сообщение об ошибке, когда пытаюсь запустить исполняемый файл. Я переименовываю с помощью проводника Windows, ничего особенного.   -  person Peter Turner    schedule 12.12.2008
comment
Итак, вам действительно удалось переименовать файл, но ошибка появляется при попытке запустить переименованный исполняемый файл? Это было не совсем ясно из ваших предыдущих описаний. Похоже, ваша программа просматривает собственное имя файла и пытается извлечь из него что-то.   -  person Oliver Giesen    schedule 13.12.2008


Ответы (6)


Delphi 2007 и Delphi 2009 используют MSbuild. Вы можете использовать события после сборки в MSbuild, чтобы делать практически все, что захотите. Например, вы можете использовать задачу копирования, чтобы скопировать EXE-файл в файл с новым именем.

person Craig Stuntz    schedule 11.12.2008

В дополнение к отличному ответу Крейга (проголосовали), если вы, к сожалению, застряли в D7, то, что, по словам Крейга, все еще может применяться, вам просто нужно будет сделать тяжелую работу самостоятельно, т.е. создать себе скрипт сборки для создания ваших приложений, а не просто при компиляции из среды IDE используйте dos-скрипт или (что еще лучше) powershell, это потребует немного усилий, но в долгосрочной перспективе даст вам больше гибкости.

person Tim Jarvis    schedule 11.12.2008

Вы можете самостоятельно использовать менеджер сборки, такой как FinalBuilder или даже MSBuild. Я все же рекомендую перейти на Delphi 2009. В 2009 году есть так много других замечательных дополнений.

person Jim McKeeth    schedule 11.12.2008

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

Почему ты не можешь? Что ты нам не рассказываешь?

Просто щелкните файл правой кнопкой мыши в проводнике, выберите «Переименовать» и дайте ему новое имя. Это не работает для вас? Если нет, сообщите нам, почему, потому что вы что-то умалчиваете о своей ситуации.

person Lasse V. Karlsen    schedule 11.12.2008
comment
Вот моя ошибка. bbb.exe - Невозможно найти компонент Не удалось запустить это приложение, так как bbb.exe не найден. Переустановка приложения может решить проблему. В любом случае переименование программы после компиляции не кажется очень элегантным решением. - person Peter Turner; 12.12.2008
comment
Если bbb.exe действительно существует на диске, то проблема не в переименовании, а в коде, который по ошибке не может найти файл. - person Lasse V. Karlsen; 12.12.2008
comment
Согласен, и с переименованием проблем нет. Проблема заключается в запуске переименованного исполняемого файла. - person Peter Turner; 12.12.2008
comment
Возможно, стоит попробовать узнать, что в программе знает имя из шага сборки? Я полагаю, что код можно легко изменить, чтобы он соответствовал любому имени файла, которое имеет программа в любое время. - person Lasse V. Karlsen; 13.12.2008

Нет, вы не можете заставить компилятор создать файл с именем, отличным от имени проекта.

Вы можете поместить свой проект в «группу проектов». Добавьте в группу пакетный проект и в этом пакетном проекте поместите команду для переименования или копирования файла. Когда вы выбираете «Скомпилировать все» или «Создать все», ваш основной проект будет обработан, и, если он успешно скомпилируется, следующий проект также будет обработан, запустив пакетный файл.

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

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

person Rob Kennedy    schedule 11.12.2008

Или вы можете заставить программу проверять собственное имя исполняемого файла при запуске. Если это не aaa.exe или bbb.exe, скопируйте себя в эти два имени и завершите (или запустите их!)

person Jim McKeeth    schedule 11.12.2008