Как сохранить целевую папку Delphi App IDE в соответствии с установщиком по умолчанию между 32 и 64-разрядными - PullRequest
1 голос
/ 11 февраля 2011

При разработке в среде IDE проще всего работать с целевой папкой приложения в папке по умолчанию, в которую оно будет установлено, например:

"c:\Program Files\MyAppFolder"

В результате у меня есть «c: \ Program Files \ MyAppFolder», закодированный в «Выходной каталог» проекта Delphi, и я могу подготовиться к разработке, запустив мой установщик (Innosetup), который заполняет эту папку вспомогательными файлами данных и т. Д.

Теперь я перехожу между Windows7 64 и Windows 7 32, и мой установщик хочет поместить его (32-разрядное) приложение в «c: \ Program Files (x86)», поэтому мне нужно указать вывод в IDE:

"c:\Program Files (86)\MyAppFolder"

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

Ответы [ 3 ]

11 голосов
/ 11 февраля 2011

При разработке в среде IDE проще всего работать с целевой папкой приложения в папке по умолчанию, в которую оно будет установлено, например,

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

Ваш Program Files выбор плохой по ряду причин:

  • Если вы допустили ошибку в жестком кодировании пути в вашем приложении, вы узнаете об этом, только когда клиент установит приложение где-то еще.
  • Выполнение вашей разработки в папке Program Files требует, чтобы вы работали с отключенным UAC: на вашем клиенте будет включен UAC, так что вы фактически не работаете в среде, похожей на среду, в которой будет находиться приложение. б.
  • Вы не можете проверить установщик приложения: поскольку у вас уже есть файлы в «расположении по умолчанию».
  • Program Files проходит через два перенаправителя папок: 64-битная виртуализация, которая делает 32-битное приложение читаемым из Program Files x86, когда они говорят Program Files, и виртуализация UAC, которая перенаправляет доступ на запись к папкам Program Files в папки в каталоге UserData. .

Я искренне считаю, что лучше перейти в другой каталог, за пределами Program Files минного поля. Для своей собственной разработки я перехожу на следующий уровень: одни и те же приложения разрабатываются в разных папках на разных компьютерах. Пример: мое приложение проверено в C:\Appname, у моего коллеги - D:\SomeFolder\AppName

2 голосов
/ 11 февраля 2011

Вы можете использовать переменные окружения при указании путей в Delphi.

Установить выходной каталог на $(ProgramFiles)\MyAppFolder.

$(ProgramFiles) в Win64 указывает на Program Files x(86) для 32-разрядных приложений.Delphi 32-битный, так что это будет работать для вас.

1 голос
/ 11 февраля 2011

Это не будет работать для меня, потому что у меня включен UAC.Я бы просто воткнул его куда-нибудь за пределы папок с программными файлами.

...