diff netinstall/desktop.cc @ 666:146d342ff859

[xemacs-hg @ 2001-09-25 02:35:32 by andyp] more updates
author andyp
date Tue, 25 Sep 2001 02:35:32 +0000
parents ce0b3f2eff35
children 42a8626b741e
line wrap: on
line diff
--- a/netinstall/desktop.cc	Thu Sep 20 06:31:11 2001 +0000
+++ b/netinstall/desktop.cc	Tue Sep 25 02:35:32 2001 +0000
@@ -61,27 +61,31 @@
 
 static char *iconname;
 static char *batname;
+static char *uninstname;
 
 static void
-make_link (char *linkpath, char *title, char *target)
+make_link (char *linkpath, char *title, char *target, char* args)
 {
+#if 0
   char argbuf[_MAX_PATH];
+#endif
   char *fname = concat (linkpath, "/", title, ".lnk", 0);
 
   if (_access (fname, 0) == 0)
     return; /* already exists */
 
-  msg ("make_link %s, %s, %s\n", fname, title, target);
+  msg ("make_link %s, %s, %s, %s\n", fname, title, target, args);
 
   mkdir_p (0, fname);
 
-  char *exepath, *args;
-
+  char *exepath;
+#if 0
   /* If we are running Win9x, build a command line. */
   if (verinfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
     {
+#endif
       exepath = target;
-      args = "";
+#if 0
     }
   else
     {
@@ -92,9 +96,9 @@
       sprintf (argbuf, "%s %s", COMMAND9XARGS, target);
       args = argbuf;
     }
-
+#endif
   msg ("make_link_2 (%s, %s, %s, %s)", exepath, args, iconname, fname);
-  make_link_2 (exepath, args, iconname, fname);
+  make_link_2 (backslash (exepath), args, iconname, fname);
 }
 
 static char* 
@@ -108,7 +112,7 @@
 			      "\\", XEMACS_NATIVE_ARCH_NAME, 0));
 }
 
-static char* 
+char* 
 find_xemacs_exe_name ()
 {
   /* Hack to support older versions. */
@@ -126,17 +130,25 @@
 static void
 remove_link (char *linkpath, char* title)
 {
-  char *fname = concat (linkpath, "/", title, ".lnk", 0);
-
-  if (_access (fname, 0) != 0)
-    return; /* doesn't exist */
-
-  msg ("remove_link %s, %s, %s\n", fname, title);
-  _unlink (fname);
+  if (title)
+    {
+      char *fname = backslash (concat (linkpath, "/", title, ".lnk", 0));
+      msg ("remove_link %s, %s\n", fname, title);
+      if (_access (fname, 0) != 0)
+	return; /* doesn't exist */
+      _unlink (fname);
+    }
+  else 
+    {
+      msg ("remove_link %s\n", linkpath);
+      if (_access (linkpath, 0) != 0)
+	return; /* doesn't exist */
+      _rmdir (linkpath);
+    }
 }
 
 static void
-start_menu (char *title, char *target, int remove)
+start_menu (char *title, char *target, int rem, char* args)
 {
   char path[_MAX_PATH];
   LPITEMIDLIST id;
@@ -152,16 +164,16 @@
      msg("Program directory for program link changed to: %s",path);
   }
 // end of Win95 addition
-  strcat (path, "/");
+  strcat (path, "\\");
   strcat (path, XEMACS_INFO_XEMACS_ORG_REGISTRY_NAME);
-  if (remove == 0)
-    make_link (path, title, target);
+  if (rem == 0)
+    make_link (path, title, target, args);
   else
     remove_link (path, title);
 }
 
 static void
-desktop_icon (char *title, char *target, int remove)
+desktop_icon (char *title, char *target, int rem)
 {
   char path[_MAX_PATH];
   LPITEMIDLIST id;
@@ -178,8 +190,8 @@
      msg("Desktop directory for deskop link changed to: %s",path);
   }
 // end of Win95 addition
-  if (remove == 0)
-    make_link (path, title, target);
+  if (rem == 0)
+    make_link (path, title, target, "");
   else
     remove_link (path, title);
 }
@@ -210,15 +222,15 @@
 void
 remove_desktop_setup()
 {
-  start_menu ("XEmacs", 0, 1);
+  start_menu ("XEmacs", 0, 1, 0);
+  start_menu ("Uninstall XEmacs", 0, 1, 0);
+  start_menu (0, 0, 1, 0);
   desktop_icon ("XEmacs", 0, 1);
 
   if (xemacs_package != 0)
     {
-      int issystem = (root_scope == IDC_ROOT_SYSTEM ? 1 : 0);
-#define FROB(exe)	  remove_app_path ((exe), \
-			issystem)
-      /*      FROB (find_xemacs_exe_name ()); */
+#define FROB(exe)	  remove_app_path (exe)
+      FROB (find_xemacs_exe_name ());
       FROB ("runemacs.exe");
       FROB ("xemacs.exe");
 #undef FROB
@@ -231,7 +243,8 @@
   save_icon ();
 
   if (root_menu && batname) {
-    start_menu ("XEmacs", batname, 0);
+    start_menu ("XEmacs", batname, 0, "");
+    start_menu ("Uninstall XEmacs", uninstname, 0, "-u");
   }
 
   if (root_desktop && batname) {
@@ -380,14 +393,14 @@
      msg ("Program directory for program link changed to: %s",path);
   }
   // end of Win95 addition
-  strcat (path, "/");
+  strcat (path, "\\");
   strcat (path, XEMACS_INFO_XEMACS_ORG_REGISTRY_NAME);
-  char *fname = concat (path, "/", title, ".lnk", 0);
+  char *fname = concat (path, "\\", title, ".lnk", 0);
 
   if (_access (fname, 0) == 0)
     return 0; /* already exists */
   
-  fname = concat (path, "/", title, ".pif", 0); /* check for a pif as well */
+  fname = concat (path, "\\", title, ".pif", 0); /* check for a pif as well */
   
   if (_access (fname, 0) == 0)
     return 0; /* already exists */
@@ -459,12 +472,14 @@
   verinfo.dwOSVersionInfoSize = sizeof (verinfo);
   GetVersionEx (&verinfo);
   batname = 0;
+  uninstname = 0;
 
   if (xemacs_package != 0 && xemacs_package->type != TY_GENERIC)
     {
       batname = concat (find_xemacs_exe_path (), "\\",
 			find_xemacs_exe_name (), 
 			0);
+      uninstname = concat (find_xemacs_exe_path (), "\\", "setup.exe", 0);
       root_desktop = check_desktop ("XEmacs", batname);
       root_menu = check_startmenu ("XEmacs", batname);
       reg_c = IDC_C_TYPE;