The R Project SVN R

Rev

Rev 85042 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 85042 Rev 85060
Line 51... Line 51...
51
    DWORD subkeys = 0;
51
    DWORD subkeys = 0;
52
  
52
  
53
    char *RHome, version[40], keyname[60];
53
    char *RHome, version[40], keyname[60];
54
    LONG rc;
54
    LONG rc;
55
    HKEY hkey, hkey2;
55
    HKEY hkey, hkey2;
56
    int delete = 0, personal = 0, use_RK = 0;
56
    int delete = 0, personal = 0;
57
 
-
 
58
#if defined(RK) && defined(R_ARCH)
-
 
59
    if (strlen(R_ARCH) > 0)
-
 
60
	use_RK = 1;
-
 
61
#endif
-
 
62
 
57
 
63
    for(int i = 1; i < argc; i++) if(!strcmp(argv[i], "/U")) delete = 1;
58
    for(int i = 1; i < argc; i++) if(!strcmp(argv[i], "/U")) delete = 1;
64
    for(int i = 1; i < argc; i++) if(!strcmp(argv[i], "/Personal")) personal = 1;
59
    for(int i = 1; i < argc; i++) if(!strcmp(argv[i], "/Personal")) personal = 1;
65
    
60
    
66
    if(personal) hk = HKEY_CURRENT_USER;
61
    if(personal) hk = HKEY_CURRENT_USER;
Line 71... Line 66...
71
    else
66
    else
72
	snprintf(version, 40, "%s.%s %s", R_MAJOR, R_MINOR, R_STATUS);
67
	snprintf(version, 40, "%s.%s %s", R_MAJOR, R_MINOR, R_STATUS);
73
 
68
 
74
    if(delete) {
69
    if(delete) {
75
	printf("unregistering R %s ... ", version);
70
	printf("unregistering R %s ... ", version);
-
 
71
 
76
#ifdef RK
72
#if defined(RK) && defined(R_ARCH)
77
	if (use_RK) {
73
	if (strlen(R_ARCH) > 0) {
78
	    snprintf(keyname, 60, "Software\\%s\\%s\\%s", PRODUCER, RK, version);
74
	    snprintf(keyname, 60, "Software\\%s\\%s\\%s", PRODUCER, RK, version);
79
	    if (RegOpenKeyEx(hk, keyname, 0, KEY_SET_VALUE, &hkey) == ERROR_SUCCESS) {
75
	    if (RegOpenKeyEx(hk, keyname, 0, KEY_SET_VALUE, &hkey) == ERROR_SUCCESS) {
80
		RegDeleteValue(hkey, "InstallPath");
76
		RegDeleteValue(hkey, "InstallPath");
81
		RegDeleteKey(hkey, version);
77
		RegDeleteKey(hkey, version);
82
		RegCloseKey(hkey);
78
		RegCloseKey(hkey);
Line 168... Line 164...
168
			       (CONST BYTE *)RHome, lstrlen(RHome)+1);
164
			       (CONST BYTE *)RHome, lstrlen(RHome)+1);
169
	    RegCloseKey(hkey2);
165
	    RegCloseKey(hkey2);
170
	}
166
	}
171
	RegCloseKey(hkey);	
167
	RegCloseKey(hkey);	
172
 
168
 
173
#ifdef RK
169
#if defined(RK) && defined(R_ARCH)
174
	if (use_RK) {
170
	if (strlen(R_ARCH) > 0) {
175
	    snprintf(keyname, 60, "Software\\%s\\%s", PRODUCER, RK);
171
	    snprintf(keyname, 60, "Software\\%s\\%s", PRODUCER, RK);
176
	    if ((rc = RegOpenKeyEx(hk, keyname, 0, 
172
	    if ((rc = RegOpenKeyEx(hk, keyname, 0, 
177
				   KEY_ALL_ACCESS, &hkey)) != ERROR_SUCCESS) {
173
				   KEY_ALL_ACCESS, &hkey)) != ERROR_SUCCESS) {
178
		/* failed to open key, so try to create it */
174
		/* failed to open key, so try to create it */
179
		rc = RegCreateKey(hk, keyname, &hkey);
175
		rc = RegCreateKey(hk, keyname, &hkey);