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

Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Разное - [решено] Автоопределение каталога установки при инсталяции и внесение значений в Реест

Ответить
Настройки темы
Разное - [решено] Автоопределение каталога установки при инсталяции и внесение значений в Реест

Аватара для A drum moons

Пользователь


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

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


Привет всем. Перейду сразу к делу.
При запуске любого инсталятора происходит автоопределение каталога установки, а затем внесение значений в реест (думаю это дело рук dll библиотек). Вернее определяется буква диска куда будет устанавливаться программа. И вносятся необходимые значения в реест.

К примеру:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\DefaultIcon]
@="C:\\Program Files\\WinDjView\\WinDjView.exe,0"
и другие...

В многих программах по изготовлению инсталяторов можно добавлять reg файлы. Созданный инсталятор инсталирует приложение, может быть чего то еще делает (все зависит от фантазии автора, не суть) и вносит изменения в реест, которые берет из reg файла. Все бы хорошо, но что если буква локального диска не C, а D? Тогда это приведет к катастрофическим последствиям!

Пробовал устанавливать такое значение @="%PROGRAMFILES%\\WinDjView\\WinDjView.exe,0", но не срослось. Или это в обще не уместно? Может кто знает как заставить систему (пусть хоть через батник) распознавать буквы локальных дисков, передавать эти значения переменным и собственно сгенерировав значения ветвей реестра добавлять их в этот самый реестр. Извиняюсь за ошибки и за столь развернутый вопрос.

Отправлено: 19:20, 31-01-2015

 

Ветеран


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

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


Цитата A drum moons:
При запуске любого инсталятора происходит автоопределение каталога установки, »
Нет. Каталог установки «по умолчанию» задаётся при создании инсталлятора. Рекомендуется использовать путь:
Код: Выделить весь код
Путь к «Program Files»\«Компания»\«Приложение»
При наличии уже установленного приложения (например, более ранней версии) правильный инсталлятор определяет данный факт и предлагает путь для установки не «по умолчанию», а в каталог ранее установленного приложения.

Цитата A drum moons:
а затем внесение значений в реест (думаю это дело рук dll библиотек). Вернее определяется буква диска куда будет устанавливаться программа. И вносятся необходимые значения в реест. »
Ещё раз нет. Происходит иначе, нежели Вы описали.

Цитата A drum moons:
В многих программах по изготовлению инсталяторов можно добавлять reg файлы. Созданный инсталятор инсталирует приложение, может быть чего то еще делает (все зависит от фантазии автора, не суть) и вносит изменения в реест, которые берет из reg файла. »
В разных бредовых псевдоинсталляторах и не такое бывает. В правильных — файл реестра можно импортировать в проект инсталляции, Затем на его основе создаются отдельные записи в проекте, которые затем могут быть использованы при инсталляции для создания разделов, параметров и задания значений параметров реестра. Причём в Вашем примере:
Цитата A drum moons:
К примеру:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\DefaultIcon]
@="C:\\Program Files\\WinDjView\\WinDjView.exe,0" »
путь «C:\Program Files\WinDjView\WinDjView.exe» строится по вышеописанным выше мною принципам:
Скрытый текст
  • при установке инсталлятор проверяет, не было ли ранее установленной версии приложения «WinDjView»;
  • при положительном ответе — для установки предлагается путь, куда было ранее установлено это приложение;
  • при отрицательном — запрашивает у ОС путь к «Program Files», добавляет путь к нему путь «WinDjView» и предлагает для инсталляции его;
  • производит в реестре потребные изменения, в их числе — регистрирует тип документа;
  • при задании пути к иконке приложения используется ранее определённый путь.

и никакого «импорта файлов реестра».

Коллега, у Вас, к сожалению, весьма извращённое представление о процессах, которые происходят (и должны происходить) при инсталляции приложения.

Цитата A drum moons:
Пробовал устанавливать такое значение @="%PROGRAMFILES%\\WinDjView\\WinDjView.exe,0", но не срослось.»
Для использования переменных окружения нужно использовать «REG_EXPAND_SZ», а не «REG_SZ». А «REG_EXPAND_SZ» в файле реестра выглядит как набор строк с hex-значениями, например:
Скрытый текст
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DjVu.Document\DefaultIcon]
"@"=hex(2):25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,\
  00,6c,00,65,00,73,00,25,00,5c,00,57,00,69,00,6e,00,44,00,6a,00,56,00,69,00,\
  65,00,77,00,5c,00,57,00,69,00,6e,00,44,00,6a,00,56,00,69,00,65,00,77,00,2e,\
  00,65,00,78,00,65,00,2c,00,30,00,00,00

Цитата A drum moons:
Или это в обще не уместно? »
Не могу сказать, специально не проверял.

Цитата A drum moons:
Может кто знает как заставить систему (пусть хоть через батник) распознавать буквы локальных дисков, передавать эти значения переменным и собственно сгенерировав значения ветвей реестра добавлять их в этот самый реестр. »
Самым правильным вариантом будет использование приличных инсталляторов.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:22, 31-01-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для A drum moons

Пользователь


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

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


Согласен. Исправлюсь. С REG_SZ я лоханулся конкретно.

Цитата Iska:
В разных бредовых псевдоинсталляторах и не такое бывает. В правильных — файл реестра можно импортировать в проект инсталляции... »
Я использовал Smart Install Maker, там можно просто импортировать файлы реестра.

Цитата Iska:
В правильных — файл реестра можно импортировать в проект инсталляции, Затем на его основе создаются отдельные записи в проекте, которые затем могут быть использованы при инсталляции для создания разделов, параметров и задания значений параметров реестра. »
Недавно поставил Inno Script Generator, но еще не юзал. Можно ли это реализовать, то что прокомментировано выше данной программой?

Ах да, я просто упаковываю всю директорию установленной программы и хочу добавить все ветки реестра этой программы в инсталляцию для последующего тихого развертывания. И всего то.

Отправлено: 21:11, 31-01-2015 | #3


Ветеран


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

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


Цитата A drum moons:
Я использовал Smart Install Maker, там можно просто импортировать файлы реестра. »
Возможные проблемы Вы сами указали в первом сообщении темы.

Цитата A drum moons:
Недавно поставил Inno Script Generator, но еще не юзал. Можно ли это реализовать, то что прокомментировано выше данной программой? »
Можно. Но, полагаю, лучше будет взять Inno Script Studio, вроде как это приложение сейчас рекомендовано в качестве IDE для подготовки проектов инсталляций Inno Setup.

Импортируете файл реестра в проект:
Скрытый текст


Вот это, так сказать, Ваш вариант:
Скрытый текст

В реальности же он несёт всё те же ошибки, если приложение будет установлено не в «%ProgramFiles%\WinDjView».

Потому, после импорта проверяете и правите при необходимости каждый параметр, используя константы или переменные компилятора (а, возможно, и препроцессора), указывающие на путь установки приложения, указываете, как поступать с параметром при инсталляции и при деинсталляции и т.п. Например — «{app}\WinDjView.exe,0». В момент инсталляции константа «{app}» будет заменена реальным путём, выбранным пользователем.

Цитата A drum moons:
Ах да, я просто упаковываю всю директорию установленной программы и хочу добавить все ветки реестра этой программы в инсталляцию для последующего тихого развертывания. И всего то. »
Мне сложно назвать это инсталляцией.

P.S. На будущее:

smart install maker

Inno Setup. Прочие вопросы
Скрипты Inno Setup. Помощь и советы [часть 7]
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:01, 31-01-2015 | #4


Аватара для A drum moons

Пользователь


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

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


Решил я опробовать Inno Script Generator, лично мой вердикт - геморойно.
Подумал воспользоваться Inno Script Studio, если все SIM не получится, но не пришлось.

Все таки собрал инсталлятор на Smart Install Maker'е 5.0.4.10, который поддреживает тип EXPAND_SZ (До этого была версия помоложе, без данной поддержки, к стати в этом и была проблема). И все отлично, а главное просто. Так зачем все усложнять?

Хочу выразить благодарность за уделенное мне время пользователю Iska! Спасибо, что откликнулись на мой зов, и спасибо за expandsz!

Отправлено: 12:46, 01-02-2015 | #5


Ветеран


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

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


Цитата A drum moons:
на Smart Install Maker'е 5.0.4.10 »
A drum moons, там тоже есть импорт файла реестра в проект:
Скрытый текст


Цитата A drum moons:
Так зачем все усложнять? »
Затем, что это ошибка. Мы ведь выше разбирали сие. Повторю — Ваша инсталляция сделает некорректную регистрацию в несуществующий путь, если пользователь укажет для установки путь:
  • отличный от «%ProgramFiles%»;
  • входящий в «%ProgramFiles%», но не «WinDjView», а какой-либо иной.
И то, и другое он вправе делать. Посему Вы обязаны это учитывать. Для выбранного Вами приложения это будет выглядеть так:
hh.exe "mk:@MSITStore:%ProgramFiles%\Smart%20Install%20Maker\rushelp.chm::/variables.html"
Цитата:
Переменные и константы инсталлятора

Переменные и константы - специальные строки, которые заменяются своим значением при создании инсталлятора (константы) или при его запуске (переменные). Все переменные и константы имеют следующий формат: %VariableName%, где VariableName может быть любым текстом. Различие между переменными и константами в том, что значение константы устанавливается при создании инсталлятора, а значение переменной зависит от свойств системы, на которой будет производиться запуск инсталлятора.


%InstallPath% Директория установки программы, которую выберет пользователь. Она определяется после прохождения пользователем диалога выбора директории

Т.е., Вы обязаны использовать, например, такое:
Скрытый текст
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:27, 01-02-2015 | #6


Аватара для A drum moons

Пользователь


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

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


Буду краток. Делаю скрытую установку, то есть без диалоговых окон, инсталляция будет по умолчанию, без вмешательства пользователя. Про импорт файлов реестра в SIM это и так ясно.

Проблема у меня в другом. Собираю инсталлятор. Чищу реестр от всего с чем связан поисковый запрос djv, djvu (ассоциацию файлов и т.д. и т.п). Запускаю собранный инсталлятор, все отрабатывает на ура, но например при запуске любого документа djvu происходит ошибка типа он не ассоциирован с нужным им расширением. Снова очищаю реестр. Запускаю родной инсталлятор от автора данного ПО. И все нормально проходит и ассоциация, и т.д. В общем проблема только в этом.

Хотя я думаю проблема в том, что я не создовал ассоциацию в HKCR. А создавал в HKLM.
Недавно натолкнулся на эту статью.
Буду пробовать.

Отправлено: 11:00, 02-02-2015 | #7


Ветеран


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

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


Цитата A drum moons:
Про импорт файлов реестра в SIM это и так ясно. »
Ура! А про остальное?

Цитата A drum moons:
Чищу реестр от всего с чем связан поисковый запрос djv, djvu (ассоциацию файлов и т.д. и т.п). Запускаю собранный инсталлятор, »
Для экспериментов следует не «чистить реестр от всего», а использовать виртуальную машину со свежеустановленной, чистой ОС.

Цитата A drum moons:
Хотя я думаю проблема в том, что я не создовал ассоциацию в HKCR. А создавал в HKLM. »
HCCR собирается из двух частей — HKLM-части, общей для всех пользователей, и HKCU-части, индивидуальной для каждого.

И да — оригинальная инсталляция «WinDjView» создаётся именно в HKLM-части:
Скрытый текст
Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document]
@="DjVu Document"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\DefaultIcon]
@="C:\\Program Files\\WinDjView\\WinDjView.exe,0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\shell]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\shell\open]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\shell\open\command]
@="\"C:\\Program Files\\WinDjView\\WinDjView.exe\" \"%1\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\shell\open\ddeexec]
@="[open(\"%1\")]"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\shell\open\ddeexec\Application]
@="WinDjView"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\shell\open\ddeexec\IfExec]
@="[rem open]"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\shell\open\ddeexec\Topic]
@="System"


Цитата A drum moons:
Недавно натолкнулся на эту статью. »
Поройтесь на местном сайте — тут изложено не в пример подробнее, со ссылками на документацию и без бредовых выводов.

Отправлено: 11:11, 02-02-2015 | #8


Аватара для A drum moons

Пользователь


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

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


Вся проблема была в том, что SIM коряво экспортирует значения в реестр. Например:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\DjVu.Document\shell\open\command]

@="\"C:\\Program Files\\WinDjView\\WinDjView.exe\" \"%1\"" - как надо.

@="\\\"C:\\Program Files\\WinDjView\\WinDjView.exe\\\" \\\"%1\\\"" - как это делает SIM

Хотя если залезть в реестр, то можно убедиться, что SIM все сделал как надо, хотя это не так...

Отправлено: 13:19, 04-02-2015 | #9


Ветеран


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

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


Цитата A drum moons:
SIM коряво экспортирует значения в реестр »
Экспортировать можно из реестра. В реестр можно только импортировать. Определитесь.

Отправлено: 13:32, 04-02-2015 | #10



Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Разное - [решено] Автоопределение каталога установки при инсталяции и внесение значений в Реест

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Архивирование с удалением каталога при помощи запуска батника из того же каталога HAMMER7 Скриптовые языки администрирования Windows 0 09-04-2012 20:29
Установка - при инсталяции Vista Business зависает при появлении ProgressBar. _ib_ Microsoft Windows Vista 5 18-09-2008 05:17
Загрузка - [решено] Черный экран после установки недопустимых значений для разрешения экрана Кварц Microsoft Windows 2000/XP 4 21-03-2008 22:34
Внесение изменений во все листы книги Excel при помощи VB макросов Vadikan Программирование и базы данных 4 29-12-2005 02:10
Ошибка при инсталяции OSAMA Непонятные проблемы с Железом 21 26-05-2004 23:55




 
Переход