diff --git a/reactos/media/inf/inf.rbuild b/reactos/media/inf/inf.rbuild
index 44d63060f05..6e3327f557f 100644
--- a/reactos/media/inf/inf.rbuild
+++ b/reactos/media/inf/inf.rbuild
@@ -14,7 +14,7 @@
nettcpip.inf
ports.inf
scsi.inf
-syssetup.inf
+syssetup.inf
usbport.inf
usbstor.inf
xboxdisp.inf
diff --git a/reactos/tools/rbuild/installfile.cpp b/reactos/tools/rbuild/installfile.cpp
index f427b0bf96a..f048fa96088 100644
--- a/reactos/tools/rbuild/installfile.cpp
+++ b/reactos/tools/rbuild/installfile.cpp
@@ -23,8 +23,8 @@
using std::string;
InstallFile::InstallFile ( const Project& project_,
- const XMLElement& installfileNode,
- const string& path )
+ const XMLElement& installfileNode,
+ const string& path )
: project ( project_ ),
node ( installfileNode )
{
@@ -40,7 +40,24 @@ InstallFile::InstallFile ( const Project& project_,
else
newname = node.value;
name = node.value;
- this->path = path;
+
+ att = node.GetAttribute ( "root", false );
+ if ( att != NULL)
+ {
+ if ( att->value == "intermediate" )
+ this->path = Environment::GetIntermediatePath () + sSep + path;
+ else if ( att->value == "output" )
+ this->path = Environment::GetOutputPath () + sSep + path;
+ else
+ {
+ throw InvalidAttributeValueException (
+ node.location,
+ "root",
+ att->value );
+ }
+ }
+ else
+ this->path = path;
}
InstallFile::~InstallFile ()
diff --git a/reactos/tools/rbuild/syssetupgenerator.cpp b/reactos/tools/rbuild/syssetupgenerator.cpp
index ce89155897b..acc64255901 100644
--- a/reactos/tools/rbuild/syssetupgenerator.cpp
+++ b/reactos/tools/rbuild/syssetupgenerator.cpp
@@ -39,7 +39,7 @@ SysSetupGenerator::Generate ()
unsigned long errorLine;
string syssetupTemplate = "media" + sSep + "inf" + sSep + "syssetup.inf.tpl";
- string syssetup = "media" + sSep + "inf" + sSep + "syssetup.inf";
+ string syssetup = Environment::GetIntermediatePath() + sSep + "media" + sSep + "inf" + sSep + "syssetup.inf";
if ( 0 != InfHostOpenFile ( &inf, syssetupTemplate.c_str (), &errorLine ) )
throw new FileNotFoundException ( syssetupTemplate );