Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: [addon] FastStone Image Viewer
Показать сообщение отдельно

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1264
Благодарности: 1024

Профиль | Отправить PM | Цитировать


Цитата fantik:
Приятно видеть свой скрипт в виде "скрипта от Black Babay" »
fantik,
Разрабатывали вы его вместе и ссылка в шапке этой темы - это ссылка на пост Black Babay и к тому же последняя, по которой скрипт скачивается.

Цитата fantik:
и ошибок, насколько мне известно, там с тех пор не находили. »
fantik,
Значит плохо искали. Сравните процедуры регистрации и дерегистрации файловых расширений в вашем и моем скриптах. Отличия не замечаете?

Итак:
  • Регистрация форматов.
    1. HKLM\SOFTWARE\Classes\FastStone.XXX\...
      У вас:
      Код: Выделить весь код
      RegWriteStringValue(HKLM, 'SOFTWARE\Classes\FastStone.'+formats[i].ext+'\shell\open\command', '', '"'+ExpandConstant('{app}')+'\FSViewer.exe" "%1"');
      RegWriteStringValue(HKLM, 'SOFTWARE\Classes\FastStone.'+formats[i].ext+'\DefaultIcon', '', ExpandConstant('{app}')+'\FSIcons.db,'+formats[i].icon);
      У меня добавлено:
      Код: Выделить весь код
      RegWriteStringValue(HKLM, 'SOFTWARE\Classes\FastStone.' + formats[i].ext, '', 'FastStone ' + UpperCase(formats[i].ext) + ' File');
      - эти записи делает оригинальный инсталлятор, вы же забыли. Ошибка №1.
    2. HKLM\SOFTWARE\Classes\.XXX
      Все правильно, бэкап безымянного ключа, эти записи добавляются при применении ассоциаций пользователем.
    3. HKCU\SOFTWARE\Classes\.XXX
      По-моему, сюда добавляются записи при применении ассоциаций пользователем, при условии, что здесь уже присутствуют классы. У вас эти записи не создаются. Ошибка №2.
    4. HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.XXX
      Все правильно, бэкап ключа Progid.
  • Дерегистрация форматов.
    1. HKLM\SOFTWARE\Classes\.XXX
      У вас:
      Код: Выделить весь код
      RegWriteStringValue(HKLM, 'SOFTWARE\Classes\.'+formats[i].ext, '', ExpandConstant('{reg:HKLM\SOFTWARE\Classes\.'+formats[i].ext+',FastStone.bak|}'));
      RegDeleteValue(HKLM, 'SOFTWARE\Classes\.'+formats[i].ext, 'FastStone.bak');
      У меня:
      Код: Выделить весь код
      RegQueryStringValue(HKLM, 'SOFTWARE\Classes\.' + formats[i].ext, 'FastStone.bak', S);
      If S = '' Then
      	RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Classes\.' + formats[i].ext)
      else
      	RegWriteStringValue(HKLM, 'SOFTWARE\Classes\.' + formats[i].ext, '', ExpandConstant('{reg:HKLM\SOFTWARE\Classes\.' + formats[i].ext + ',FastStone.bak|}'));
      , т.е. если FastStone.bak пустой, то класса до установки не существовало, а значит класс должен быть удален. У вас же останется пустая запись. Ошибка №3.
    2. HKCU\SOFTWARE\Classes\.XXX
      Раз вы не вносили эти записи, то и удалять нечего.
    3. HKLM\SOFTWARE\Classes\FastStone.XXX
      Все правильно.
    4. HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.XXX
      Все правильно. Если бэкап пустой, ключа Progid до установки не было.
  • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\FSViewer.exe
    Куда подевали? Ошибка №4.

P.S. Не зря. Скрипт хорош, но недоделан.
P.P.S. Можно еще к фунционалу добавить удаление записей не только из HKCU пользователя, запустившего деинсталлятор, но и из HKCU других пользователей на ПК. В принципе решаемо.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:12, 08-06-2010 | #126

Название темы: [addon] FastStone Image Viewer