[1/2] msiexec: Fix parsing of basic UI level modifiers.

Hans Leidekker hans at codeweavers.com
Mon Oct 5 17:29:12 CDT 2015


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 programs/msiexec/msiexec.c | 43 ++++++++++++++++++-------------------------
 1 file changed, 18 insertions(+), 25 deletions(-)

diff --git a/programs/msiexec/msiexec.c b/programs/msiexec/msiexec.c
index cb0984d..bb5c931 100644
--- a/programs/msiexec/msiexec.c
+++ b/programs/msiexec/msiexec.c
@@ -886,10 +886,6 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
 			{
 				InstallUILevel = INSTALLUILEVEL_NONE;
 			}
-			else if(msi_strequal(argvW[i]+2, "b"))
-			{
-				InstallUILevel = INSTALLUILEVEL_BASIC;
-			}
 			else if(msi_strequal(argvW[i]+2, "r"))
 			{
 				InstallUILevel = INSTALLUILEVEL_REDUCED;
@@ -902,28 +898,25 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
 			{
 				InstallUILevel = INSTALLUILEVEL_NONE|INSTALLUILEVEL_ENDDIALOG;
 			}
-			else if(msi_strequal(argvW[i]+2, "b+"))
-			{
-				InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_ENDDIALOG;
-			}
-			else if(msi_strequal(argvW[i]+2, "b-"))
-			{
-				InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_PROGRESSONLY;
-			}
-			else if(msi_strequal(argvW[i]+2, "b+!"))
-			{
-				WINE_FIXME("Unhandled modifier: !\n");
-				InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_ENDDIALOG|INSTALLUILEVEL_HIDECANCEL;
-			}
-			else if(msi_strequal(argvW[i]+2, "b-!"))
-			{
-				WINE_FIXME("Unhandled modifier: !\n");
-				InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_PROGRESSONLY|INSTALLUILEVEL_HIDECANCEL;
-			}
-			else if(msi_strequal(argvW[i]+2, "b!"))
+			else if(msi_strprefix(argvW[i]+2, "b"))
 			{
-				WINE_FIXME("Unhandled modifier: !\n");
-				InstallUILevel = INSTALLUILEVEL_BASIC|INSTALLUILEVEL_HIDECANCEL;
+                const WCHAR *ptr = argvW[i] + 3;
+
+                InstallUILevel = INSTALLUILEVEL_BASIC;
+
+                while (*ptr)
+                {
+                    if (msi_strprefix(ptr, "+"))
+                        InstallUILevel |= INSTALLUILEVEL_ENDDIALOG;
+                    if (msi_strprefix(ptr, "-"))
+                        InstallUILevel |= INSTALLUILEVEL_PROGRESSONLY;
+                    if (msi_strprefix(ptr, "!"))
+                    {
+                        WINE_FIXME("Unhandled modifier: !\n");
+                        InstallUILevel |= INSTALLUILEVEL_HIDECANCEL;
+                    }
+                    ptr++;
+                }
 			}
 			else
 			{
-- 
2.1.4




More information about the wine-patches mailing list