annotate netinstall/desktop.cc @ 589:37fe04af1590

[xemacs-hg @ 2001-05-31 02:00:29 by wmperry] Regenerated some .c files from their lisp equivalents for GTK bindings. Fix buttons as modifiers code so that text selection works in GTK event loop.
author wmperry
date Thu, 31 May 2001 02:00:31 +0000
parents 0784d089fdc9
children ce0b3f2eff35
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
1 /*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
2 * Copyright (c) 2000, Red Hat, Inc.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
3 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
7 * (at your option) any later version.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
8 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
9 * A copy of the GNU General Public License can be found at
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
10 * http://www.gnu.org/
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
11 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
12 * Written by DJ Delorie <dj@cygnus.com>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
13 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
14 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
15
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
16 /* The purpose of this file is to manage all the desktop setup, such
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17 as start menu, batch files, desktop icons, and shortcuts. Note
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18 that unlike other do_* functions, this one is called directly from
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 install.cc */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22 #include "win32.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23 #include <shlobj.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25 #include <io.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26 #include <stdio.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
27 #include <stdlib.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
28 #ifndef WIN32_NATIVE
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
29 #include <unistd.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
30 #endif
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
31
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
32 #include "resource.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
33 #include "ini.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
34 #include "msg.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
35 #include "state.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
36 #include "concat.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
37 #include "mkdir.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
38 #include "dialog.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
39 #include "version.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
40 #include "reginfo.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
41 #include "regedit.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
42 #include "port.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
43
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
44 extern "C" {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
45 void make_link_2 (char *exepath, char *args, char *icon, char *lname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
46 };
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
47
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
48 static OSVERSIONINFO verinfo;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
49
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
50 /* Lines starting with '@' are conditionals - include 'N' for NT,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
51 '5' for Win95, '8' for Win98, '*' for all, like this:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
52 echo foo
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
53 @N8
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
54 echo NT or 98
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
55 @*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
56 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
57
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
58 #define COMMAND9XARGS "/E:4096 /c"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
59 #define COMMAND9XEXE "\\command.com"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
60
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
61 static char *iconname;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
62 static char *batname;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
63
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
64 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
65 make_link (char *linkpath, char *title, char *target)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
66 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
67 char argbuf[_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
68 char *fname = concat (linkpath, "/", title, ".lnk", 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
69
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
70 if (_access (fname, 0) == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
71 return; /* already exists */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
72
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
73 msg ("make_link %s, %s, %s\n", fname, title, target);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
74
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
75 mkdir_p (0, fname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
76
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
77 char *exepath, *args;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
78
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
79 /* If we are running Win9x, build a command line. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
80 if (verinfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
81 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
82 exepath = target;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
83 args = "";
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
84 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
85 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
86 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
87 char windir[MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
88
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
89 GetWindowsDirectory (windir, sizeof (windir));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
90 exepath = concat (windir, COMMAND9XEXE, 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
91 sprintf (argbuf, "%s %s", COMMAND9XARGS, target);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
92 args = argbuf;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
93 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
94
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
95 msg ("make_link_2 (%s, %s, %s, %s)", exepath, args, iconname, fname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
96 make_link_2 (exepath, args, iconname, fname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
97 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
98
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
99 static char*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
100 find_xemacs_exe_path ()
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
101 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
102 if (xemacs_package->type == TY_CYGWIN)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
103 return backslash (concat (root_dir, "/bin/", XEMACS_CYGWIN_ARCH_NAME, 0));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
104 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
105 return backslash (concat (root_dir, "\\XEmacs-",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
106 xemacs_package->info[xemacs_package->trust].version,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
107 "\\", XEMACS_NATIVE_ARCH_NAME, 0));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
108 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
109
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
110 static char*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
111 find_xemacs_exe_name ()
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
112 {
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 452
diff changeset
113 /* Hack to support older versions. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 452
diff changeset
114 if (strncmp (xemacs_package->info[xemacs_package->trust].version,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 452
diff changeset
115 "21.1", 4) == 0)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 452
diff changeset
116 return strdup ("runemacs.exe");
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 452
diff changeset
117 else if (xemacs_package->type == TY_CYGWIN)
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
118 return backslash (concat ("xemacs-",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
119 xemacs_package->info[xemacs_package->trust].version,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
120 ".exe", 0));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
121 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
122 return strdup ("xemacs.exe");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
123 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
124
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
125 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
126 start_menu (char *title, char *target)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
127 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
128 char path[_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
129 LPITEMIDLIST id;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
130 int issystem = (root_scope == IDC_ROOT_SYSTEM) ? 1 : 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
131 SHGetSpecialFolderLocation (NULL, issystem ? CSIDL_COMMON_PROGRAMS : CSIDL_PROGRAMS, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
132 SHGetPathFromIDList (id, path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
133 // following lines added because it appears Win95 does not use common programs
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
134 // unless it comes into play when multiple users for Win95 is enabled
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
135 msg("Program directory for program link: %s",path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
136 if ( strlen(path) == 0) {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
137 SHGetSpecialFolderLocation (NULL, CSIDL_PROGRAMS, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
138 SHGetPathFromIDList (id, path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
139 msg("Program directory for program link changed to: %s",path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
140 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
141 // end of Win95 addition
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
142 strcat (path, "/");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
143 strcat (path, XEMACS_INFO_XEMACS_ORG_REGISTRY_NAME);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
144 make_link (path, title, target);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
145 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
146
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
147 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
148 desktop_icon (char *title, char *target)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
149 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
150 char path[_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
151 LPITEMIDLIST id;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
152 int issystem = (root_scope == IDC_ROOT_SYSTEM) ? 1 : 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
153 //SHGetSpecialFolderLocation (NULL, issystem ? CSIDL_DESKTOP : CSIDL_COMMON_DESKTOPDIRECTORY, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
154 SHGetSpecialFolderLocation (NULL, issystem ? CSIDL_COMMON_DESKTOPDIRECTORY : CSIDL_DESKTOPDIRECTORY, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
155 SHGetPathFromIDList (id, path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
156 // following lines added because it appears Win95 does not use common programs
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
157 // unless it comes into play when multiple users for Win95 is enabled
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
158 msg("Desktop directory for desktop link: %s",path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
159 if ( strlen(path) == 0) {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
160 SHGetSpecialFolderLocation (NULL, CSIDL_DESKTOPDIRECTORY, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
161 SHGetPathFromIDList (id, path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
162 msg("Desktop directory for deskop link changed to: %s",path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
163 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
164 // end of Win95 addition
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
165 make_link (path, title, target);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
166 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
167
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
168 static int
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
169 uexists (char *path)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
170 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
171 char *f = concat (root_dir, path, 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
172 int a = _access (f, 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
173 free (f);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
174 if (a == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
175 return 1;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
176 return 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
177 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
178
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
179 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
180 make_passwd_group ()
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
181 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
182 if (verinfo.dwPlatformId != VER_PLATFORM_WIN32_NT)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
183 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
184 int i;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
185
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
186 LOOP_PACKAGES
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
187 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
188 if (!strcmp (package[i].name, "cygwin"))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
189 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
190 /* mkpasswd and mkgroup are not working on 9x/ME up to 1.1.5-4 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
191 char *border_version = canonicalize_version ("1.1.5-4");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
192 char *inst_version = canonicalize_version (pi.version);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
193
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
194 if (strcmp (inst_version, border_version) <= 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
195 return;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
196
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
197 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
198 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
199 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
200 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
201
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
202 if (uexists ("/etc/passwd") && uexists ("/etc/group"))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
203 return;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
204
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
205 char *fname = concat (root_dir, "/etc/postinstall/passwd-grp.bat", 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
206 mkdir_p (0, fname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
207
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
208 FILE *p = fopen (fname, "wb");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
209 if (!p)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
210 return;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
211
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
212 if (!uexists ("/etc/passwd"))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
213 fprintf (p, "bin\\mkpasswd -l > etc\\passwd\n");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
214 if (!uexists ("/etc/group"))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
215 fprintf (p, "bin\\mkgroup -l > etc\\group\n");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
216
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
217 fclose (p);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
218 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
219
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
220 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
221 save_icon ()
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
222 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
223 iconname = backslash (concat (root_dir, XEMACS_RESOURCE_DIR,
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
224 "xemacs.ico", 0));
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
225
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
226 HRSRC rsrc = FindResource (NULL, "XEMACS.ICON", "FILE");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
227 if (rsrc == NULL)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
228 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
229 fatal ("FindResource failed");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
230 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
231 HGLOBAL res = LoadResource (NULL, rsrc);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
232 char *data = (char *) LockResource (res);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
233 int len = SizeofResource (NULL, rsrc);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
234
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
235 FILE *f = fopen (iconname, "wb");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
236 if (f)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
237 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
238 fwrite (data, 1, len, f);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
239 fclose (f);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
240 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
241 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
242
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
243 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
244 do_desktop_setup()
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
245 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
246 save_icon ();
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
247
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
248 if (root_menu && batname) {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
249 start_menu ("XEmacs", batname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
250 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
251
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
252 if (root_desktop && batname) {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
253 desktop_icon ("XEmacs", batname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
254 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
255
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
256 // set regkeys for the application
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
257 if (xemacs_package != 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
258 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
259 int issystem = (root_scope == IDC_ROOT_SYSTEM ? 1 : 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
260 if (xemacs_package->type == TY_NATIVE)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
261 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
262 #define FROB(exe) set_app_path ((exe), \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
263 find_xemacs_exe_path (), \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
264 issystem)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
265 FROB (find_xemacs_exe_name ());
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
266 FROB ("runemacs.exe");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
267 FROB ("xemacs.exe");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
268 #undef FROB
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
269 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
270 else if (xemacs_package->type == TY_CYGWIN)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
271 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
272 int junk;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
273 char* root = find_cygwin_root (&junk);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
274 #define FROB(exe) set_app_path ((exe), \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
275 concat (find_xemacs_exe_path (), ";", \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
276 root, "\\bin;", \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
277 root, "\\usr\\bin", 0), \
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
278 issystem)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
279 FROB (find_xemacs_exe_name ());
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
280 FROB ("runemacs.exe");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
281 FROB ("xemacs.exe");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
282 #undef FROB
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
283 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
284 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
285 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
286
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
287 static int da[] = { IDC_ROOT_DESKTOP, 0 };
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
288 static int ma[] = { IDC_ROOT_MENU, 0 };
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
289
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
290 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
291 check_if_enable_next (HWND h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
292 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
293 EnableWindow (GetDlgItem (h, IDOK), 1);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
294 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
295
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
296 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
297 load_dialog (HWND h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
298 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
299 rbset (h, da, root_desktop);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
300 rbset (h, ma, root_menu);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
301 check_if_enable_next (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
302 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
303
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
304 static int check_desktop (char *title, char *target)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
305 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
306 char path[_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
307 LPITEMIDLIST id;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
308 int issystem = (root_scope == IDC_ROOT_SYSTEM) ? 1 : 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
309 SHGetSpecialFolderLocation (NULL, issystem ? CSIDL_COMMON_DESKTOPDIRECTORY : CSIDL_DESKTOPDIRECTORY, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
310 SHGetPathFromIDList (id, path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
311 // following lines added because it appears Win95 does not use common programs
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
312 // unless it comes into play when multiple users for Win95 is enabled
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
313 msg ("Desktop directory for desktop link: %s",path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
314 if (strlen (path) == 0) {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
315 SHGetSpecialFolderLocation (NULL, CSIDL_DESKTOPDIRECTORY, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
316 SHGetPathFromIDList (id, path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
317 msg ("Desktop directory for deskop link changed to: %s",path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
318 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
319 // end of Win95 addition
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
320 char *fname = concat (path, "/", title, ".lnk", 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
321
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
322 if (_access (fname, 0) == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
323 return 0; /* already exists */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
324
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
325 fname = concat (path, "/", title, ".pif", 0); /* check for a pif as well */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
326
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
327 if (_access (fname, 0) == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
328 return 0; /* already exists */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
329
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
330 return IDC_ROOT_DESKTOP;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
331 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
332
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
333 static int check_startmenu (char *title, char *target)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
334 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
335 char path[_MAX_PATH];
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
336 LPITEMIDLIST id;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
337 int issystem = (root_scope == IDC_ROOT_SYSTEM) ? 1 : 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
338 SHGetSpecialFolderLocation (NULL, issystem ? CSIDL_COMMON_PROGRAMS : CSIDL_PROGRAMS, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
339 SHGetPathFromIDList (id, path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
340 // following lines added because it appears Win95 does not use common programs
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
341 // unless it comes into play when multiple users for Win95 is enabled
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
342 msg ("Program directory for program link: %s",path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
343 if (strlen (path) == 0) {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
344 SHGetSpecialFolderLocation (NULL, CSIDL_PROGRAMS, &id);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
345 SHGetPathFromIDList (id, path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
346 msg ("Program directory for program link changed to: %s",path);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
347 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
348 // end of Win95 addition
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
349 strcat (path, "/");
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
350 strcat (path, XEMACS_INFO_XEMACS_ORG_REGISTRY_NAME);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
351 char *fname = concat (path, "/", title, ".lnk", 0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
352
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
353 if (_access (fname, 0) == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
354 return 0; /* already exists */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
355
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
356 fname = concat (path, "/", title, ".pif", 0); /* check for a pif as well */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
357
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
358 if (_access (fname, 0) == 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
359 return 0; /* already exists */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
360
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
361 return IDC_ROOT_MENU;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
362 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
363
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
364 static void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
365 save_dialog (HWND h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
366 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
367 root_desktop= rbget (h, da);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
368 root_menu = rbget (h, ma);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
369 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
370
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
371 static BOOL
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
372 dialog_cmd (HWND h, int id, HWND hwndctl, UINT code)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
373 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
374 switch (id)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
375 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
376
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
377 case IDC_ROOT_DESKTOP:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
378 case IDC_ROOT_MENU:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
379 save_dialog (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
380 check_if_enable_next (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
381 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
382
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
383 case IDOK:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
384 save_dialog (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
385 do_desktop_setup();
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
386 NEXT (IDD_S_POSTINSTALL);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
387 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
388
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
389 case IDC_BACK:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
390 save_dialog (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
391 NEXT (IDD_CHOOSE);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
392 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
393
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
394 case IDCANCEL:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
395 NEXT (0);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
396 break;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
397 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
398 return FALSE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
399 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
400
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
401 static BOOL CALLBACK
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
402 dialog_proc (HWND h, UINT message, WPARAM wParam, LPARAM lParam)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
403 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
404 switch (message)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
405 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
406 case WM_INITDIALOG:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
407 load_dialog (h);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
408 return FALSE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
409 case WM_COMMAND:
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
410 return HANDLE_WM_COMMAND (h, wParam, lParam, dialog_cmd);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
411 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
412 return FALSE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
413 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
414
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
415 void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
416 do_desktop (HINSTANCE h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
417 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
418 CoInitialize (NULL);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
419
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
420 verinfo.dwOSVersionInfoSize = sizeof (verinfo);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
421 GetVersionEx (&verinfo);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
422 batname = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
423
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
424 if (xemacs_package != 0 && xemacs_package->type != TY_GENERIC)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
425 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
426 batname = concat (find_xemacs_exe_path (), "\\",
452
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
427 find_xemacs_exe_name (),
3d3049ae1304 Import from CVS: tag r21-2-41
cvs
parents: 448
diff changeset
428 0);
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
429 root_desktop = check_desktop ("XEmacs", batname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
430 root_menu = check_startmenu ("XEmacs", batname);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
431 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
432 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
433 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
434 root_desktop = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
435 root_menu = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
436 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
437
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
438 int rv = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
439
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
440 rv = DialogBox (h, MAKEINTRESOURCE (IDD_DESKTOP), 0, dialog_proc);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
441 if (rv == -1)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
442 fatal (IDS_DIALOG_FAILED);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
443 }