J'écris une application Windows GUI qui tente d'invoquer le script Apache ANT. Le script ANT va construire et emballer un groupe de projet Delphi dans un setup.exe final. Le script ANT construit l'application Delphi 2007/2010 et Delphi XE.Un processus lancé par Delphi IDE "Exécuter sans débogage" hérite des variables d'environnement de l'IDE
Mon application GUI ANT est compilée et construite par Delphi XE. Lorsque j'utilise "Exécuter sans débogage" dans Delphi XE pour exécuter l'application, l'application ne fonctionne pas correctement avec le script ANT. Le script ANT ne construit pas l'application où les DCU, BPL et EXE ne sont pas compilés dans le dossier que je m'attendais.
Cependant, si je lance mon application GUI dans Windows Explorer, le script ANT construit l'application correctement> Toutes les DCU, BPL et EXE ont été construites et conservées dans le dossier que j'ai assigné. Après le débogage de l'application graphique, j'ai trouvé que l'application exécutée avec "Exécuter sans débogage" de Delphi hériterait des variables d'environnement de Delphi IDE. Voici comment j'extraire les variables d'environnement:
function GetAllEnvVars(const Vars: TStrings): Integer;
var
PEnvVars: PChar; // pointer to start of environment block
PEnvEntry: PChar; // pointer to an env string in block
begin
// Clear the list
if Assigned(Vars) then
Vars.Clear;
// Get reference to environment block for this process
PEnvVars := GetEnvironmentStrings;
if PEnvVars <> nil then
begin
// We have a block: extract strings from it
// Env strings are #0 separated and list ends with #0#0
PEnvEntry := PEnvVars;
try
while PEnvEntry^ <> #0 do
begin
if Assigned(Vars) then
Vars.Add(PEnvEntry);
Inc(PEnvEntry, StrLen(PEnvEntry) + 1);
end;
// Calculate length of block
Result := (PEnvEntry - PEnvVars) + 1;
finally
// Dispose of the memory block
Windows.FreeEnvironmentStrings(PEnvVars);
end;
end
else
// No block => zero length
Result := 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetAllEnvVars(Memo1.Lines);
end;
Ceci est une liste des variables d'environnement pour un processus lancé par « Exécuter sans débogage » de Delphi XE:
ActiveHostApplication=
ActiveProjectModule=
ALLUSERSPROFILE=C:\ProgramData
ANT_HOME=C:\Components\Components.d11\build.tool\apache-ant-1.7.1
ANT_OPTS=-Xmx512m
APPDATA=C:\Users\coder\AppData\Roaming
AQtime7_Product_Path=C:\Program Files (x86)\Automated QA\AQtime 7\Bin\
BDS=c:\program files (x86)\embarcadero\rad studio\8.0
BDSAppDataBaseDir=BDS
BDSBIN=c:\program files (x86)\embarcadero\rad studio\8.0\bin
BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\8.0
BDSINCLUDE=c:\program files (x86)\embarcadero\rad studio\8.0\include
BDSLIB=c:\program files (x86)\embarcadero\rad studio\8.0\lib
BDSPROJECTSDIR=C:\Users\coder\Documents\RAD Studio\Projects
BDSUSERDIR=C:\Users\coder\Documents\RAD Studio\8.0
CG_BOOST_ROOT=C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\include\boost_1_39
CommonProgramFiles=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=OBSERVER
ComSpec=C:\Windows\system32\cmd.exe
DELPHI=c:\program files (x86)\embarcadero\rad studio\8.0
Et ceci est une liste de l'environnement variables pour un processus lancé par Windows Explorer:
ALLUSERSPROFILE=C:\ProgramData
ANT_HOME=C:\Components\Components.d11\build.tool\apache-ant-1.7.1
ANT_OPTS=-Xmx512m
APPDATA=C:\Users\coder\AppData\Roaming
BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\5.0
CG_BOOST_ROOT=C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\include\boost_1_39
CommonProgramFiles=C:\Program Files (x86)\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=OBSERVER
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
Comparer 2 liste des variables d'environnement, vous remarquerez peut-être il y a quelques variables comme BDSINCLUDE et BDSBIN n » T existe dans le processus lancé par Windows Shell. Ces variables d'environnement de l'EDI de Delphi XE ont affecté le script ANT qui construit l'application Delphi 2007/2010. Mon problème devrait résoudre si ces variables d'environnement IDE Delphi ne sont pas montrées dans le processus.
Est-ce que quelqu'un a des idées s'il est possible de lancer un processus (Exécuter avec ou sans débogage) à partir de Delphi IDE qui n'hérite pas des variables d'environnement de Delphi IDE?
Plate-forme, c'est un nouveau dans Rad XE je pense. –