Index: trunk/qmake/generators/makefile.cpp
===================================================================
--- trunk/qmake/generators/makefile.cpp	(revision 531)
+++ trunk/qmake/generators/makefile.cpp	(revision 535)
@@ -1209,4 +1209,14 @@
 MakefileGenerator::writeInstalls(QTextStream &t, const QString &installs, bool noBuild)
 {
+    const QString del_suffix =
+        Option::target_mode == Option::TARG_OS2_MODE ?
+            QString(" >nul 2>&1"): // reduce noise
+            QString::null;
+
+    const QString inst_prefix =
+        Option::target_mode == Option::TARG_OS2_MODE ?
+            QString::null: // report errors (copy command overwrites quietly)
+            QString("-");
+
     QString rm_dir_contents("-$(DEL_FILE)");
     if (!isDosLikeShell()) //ick
@@ -1276,9 +1286,9 @@
                     QString cmd;
                     if (fi.isDir())
-                       cmd = "-$(INSTALL_DIR)";
+                       cmd = inst_prefix + "$(INSTALL_DIR)";
                     else if (fi.isExecutable())
-                       cmd = "-$(INSTALL_PROGRAM)";
+                       cmd = inst_prefix + "$(INSTALL_PROGRAM)";
                     else
-                       cmd = "-$(INSTALL_FILE)";
+                       cmd = inst_prefix + "$(INSTALL_FILE)";
                     cmd += " " + escapeFilePath(wild) + " " + dst_file + "\n";
                     target += cmd;
@@ -1289,5 +1299,5 @@
                     if(!uninst.isEmpty())
                         uninst.append("\n\t");
-                    uninst.append(rm_dir_contents + " " + filePrefixRoot(root, fileFixify(dst + filestr, FileFixifyAbsolute, false)));
+                    uninst.append(rm_dir_contents + " " + filePrefixRoot(root, fileFixify(dst + filestr, FileFixifyAbsolute, false)) + del_suffix);
                     continue;
                 }
@@ -1299,10 +1309,10 @@
                     QString dst_file = filePrefixRoot(root, dst);
                     QFileInfo fi(fileInfo(wild));
-                    QString cmd =  QString(fi.isExecutable() ? "-$(INSTALL_PROGRAM)" : "-$(INSTALL_FILE)") + " " +
+                    QString cmd = inst_prefix + QString(fi.isExecutable() ? "$(INSTALL_PROGRAM)" : "$(INSTALL_FILE)") + " " +
                                    wild + " " + dst_file + "\n";
                     target += cmd;
                     if(!uninst.isEmpty())
                         uninst.append("\n\t");
-                    uninst.append(rm_dir_contents + " " + filePrefixRoot(root, fileFixify(dst + filestr, FileFixifyAbsolute, false)));
+                    uninst.append(rm_dir_contents + " " + filePrefixRoot(root, fileFixify(dst + filestr, FileFixifyAbsolute, false)) + del_suffix);
                 }
                 for(int x = 0; x < files.count(); x++) {
@@ -1312,5 +1322,5 @@
                     if(!uninst.isEmpty())
                         uninst.append("\n\t");
-                    uninst.append(rm_dir_contents + " " + filePrefixRoot(root, fileFixify(dst + file, FileFixifyAbsolute, false)));
+                    uninst.append(rm_dir_contents + " " + filePrefixRoot(root, fileFixify(dst + file, FileFixifyAbsolute, false)) + del_suffix);
                     QFileInfo fi(fileInfo(dirstr + file));
                     if(!target.isEmpty())
@@ -1322,5 +1332,5 @@
                         dst_file += fi.fileName();
                     }
-                    QString cmd = QString(fi.isDir() ? "-$(INSTALL_DIR)" : "-$(INSTALL_FILE)") + " " +
+                    QString cmd = inst_prefix + QString(fi.isDir() ? "$(INSTALL_DIR)" : "$(INSTALL_FILE)") + " " +
                                   dirstr + file + " " + dst_file + "\n";
                     target += cmd;
@@ -1372,5 +1382,5 @@
                 t << "\n\t"
                   << uninst.join(" ") << "\n\t"
-                  << "-$(DEL_DIR) " << filePrefixRoot(root, dst) << " " << endl << endl;
+                  << "-$(DEL_DIR) " << filePrefixRoot(root, dst) << " " << del_suffix << endl << endl;
             }
             t << endl;
Index: trunk/qmake/generators/win32/winmakefile.cpp
===================================================================
--- trunk/qmake/generators/win32/winmakefile.cpp	(revision 531)
+++ trunk/qmake/generators/win32/winmakefile.cpp	(revision 535)
@@ -795,4 +795,9 @@
             QString::null;
 
+    const QString inst_prefix =
+        Option::target_mode == Option::TARG_OS2_MODE ?
+            QString::null: // report errors (copy command overwrites quietly)
+            QString("-");
+
     if(t == "target" && project->first("TEMPLATE") == "lib") {
         if(project->isActiveConfig("create_prl") && !project->isActiveConfig("no_install_prl") &&
@@ -803,5 +808,5 @@
                 dst_prl = dst_prl.right(dst_prl.length() - slsh - 1);
             dst_prl = filePrefixRoot(root, targetdir + dst_prl);
-            ret += "-$(INSTALL_FILE) \"" + project->first("QMAKE_INTERNAL_PRL_FILE") + "\" \"" + dst_prl + "\"";
+            ret += inst_prefix + "$(INSTALL_FILE) \"" + project->first("QMAKE_INTERNAL_PRL_FILE") + "\" \"" + dst_prl + "\"";
             if(!uninst.isEmpty())
                 uninst.append("\n\t");
@@ -815,5 +820,5 @@
             if(!ret.isEmpty())
                 ret += "\n\t";
-            ret += QString("-$(INSTALL_FILE)") + " \"" + src_targ + "\" \"" + dst_targ + "\"";
+            ret += QString(inst_prefix + "$(INSTALL_FILE)") + " \"" + src_targ + "\" \"" + dst_targ + "\"";
             if(!uninst.isEmpty())
                 uninst.append("\n\t");
@@ -827,5 +832,5 @@
         if(!ret.isEmpty())
             ret += "\n\t";
-        ret += QString("-$(INSTALL_FILE)") + " \"" + src_targ + "\" \"" + dst_targ + "\"";
+        ret += QString(inst_prefix + "$(INSTALL_FILE)") + " \"" + src_targ + "\" \"" + dst_targ + "\"";
         if(!uninst.isEmpty())
             uninst.append("\n\t");
