Estoy escribiendo una aplicación GUI de Windows que intenta invocar el script ANT de Apache. El script ANT creará y empaquetará un grupo de proyectos Delphi en un setup.exe final. El script ANT crea Delphi 2007/2010 y la aplicación Delphi XE.Un proceso iniciado por Delphi IDE "Ejecutar sin depuración" hereda las variables de entorno de IDE
Mi aplicación ANT GUI está compilada y construida por Delphi XE. Cuando uso "Ejecutar sin depurar" en Delphi XE para ejecutar la aplicación, la aplicación no funciona correctamente con el script ANT. El script ANT no crea la aplicación donde las DCU, BPL y EXE no se compilan en la carpeta que esperaba.
Sin embargo, si ejecuto mi aplicación GUI en el Explorador de Windows, el script ANT crea la aplicación correctamente> Todas las DCU, BPL y EXE se crearon y guardan en la carpeta que asigné.
Después de depurar la aplicación de la GUI, encontré que la aplicación ejecutada con Delphi "Ejecutar sin depurar" heredará variables de entorno de Delphi IDE. Aquí es cómo puedo extraer las variables de entorno:
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;
Ésta es una lista de variables de entorno para un proceso iniciado por Delphi XE "Ejecutar sin depurar":
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
Y esta es una lista de medio ambiente variables de un proceso puesto en marcha por el Explorador de Windows:
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
comparación 2 lista de variables de entorno, es posible que observe que hay pocas variables como BDSINCLUDE y BDSBIN doesn' Existen en el proceso iniciado por Windows Shell. Esas variables de entorno del IDE de Delphi XE han afectado al script ANT que crea la aplicación Delphi 2007/2010. Mi problema debería solucionarse si esas variables de entorno IDE de Delphi no se muestran en el proceso.
¿Alguien tiene ideas si es posible iniciar el proceso (Ejecutar con o sin depuración) de Delphi IDE que no hereda las variables de entorno de Delphi IDE?
Plataforma, esa es una nueva en Rad XE, creo. –