Войти

Показать полную графическую версию : [решено] как добавить путь к текущей директории в reg файл из bat файла ?


mitiya
18-03-2008, 01:47
смысл вот в чем :
для перепаковки программы беру ее ветку реестра , а там в некоторых ключах прописан путь к той папке куда установлена программа.
Соответственно для того чтобы перепакованая прога могла ставится куда угодно надо в reg файле пред его запуском заменить путь.
Сначала мне это козалось не сложной задачей и я сделал следующие:

Взял reg (install.reg) файл заменил в нем абсолютный путь (к примеру c:\programs\prog) на просто слово instPath получилось примерно следующие



Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ABC]
[HKEY_LOCAL_MACHINE\SOFTWARE\ABC\prog]

"Install_Path"="instPath\\folder"



потом написал батник следующего вида



copy install.reg tempinstall.reg

CHGSTR.EXE instPath %cd% tempinstall.reg

regedt32.exe /s tempinstall.reg



и казалось бы все должно работать, но увы . Дело в том что в reg файле почему-то пути идут с "\\" а %cd% выдает туь с "\" и в результате
путь в tempinstall.reg выглядит как c:\programs\prog\\folder , а должен как c:\\programs\\prog\\folder .

В таком простом примере как я привел конечно проще задать путь командой REG напрямую в реестр, но все же в тех случаях когда путей значительно больше было бы гораздо удобней пользоваться вышеуказанным способом , но вот как из c:\programs\prog\\folder получить c:\\programs\\prog\\folder я не знаю.

Baw17
18-03-2008, 08:37
используйте Переменные среды (http://oszone.net/3673)

mitiya
18-03-2008, 19:05
Baw17, И как это мне поможет ? мне теперь для каждой программы переменную создовать и постоянно ее хранить ?
Это хорошо, если я устанавливаю в програм файлс ,а если я устанавливаю даже не на систем драйв ?

Petya V4sechkin
18-03-2008, 21:23
а %cd% выдает туь с "\"
Замена одинарных \ на двойные:
Set CD2=%CD:\=\\%
Echo %CD2%

Set /?

mitiya
18-03-2008, 22:13
О , Спасибо !!! все ок.

werwolf-basic
26-03-2008, 23:54
А если через reg.exe в параметре /v указать "%~d0" так и будет в реестре

"Install_Path"="%~d0" да?

elChoopacabra
27-03-2008, 13:52
Очень интересная тема т.к. перепаковываю практически весь свой софт, и есть иногда сложности...
Но из постов мало что понял... Буду очень признателен, если объясните на конкретном примере...
Допустим есть
C:\Program Files\PicaView32\PicaView.dll
Пишет себя в реестре
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{68f32140-2ca3-11d0-acc1-444553540000}\InProcServer32]
@="C:\\PROGRA~1\\PICAVI~1\\PicaView.dll"
Сразу отмечу, что понимает только короткие имена и не понимает переменные типа %systemdrive%
Вот как избавится в данном случае от привязки к диску C:\ т.е., чтобы при инсталляции прописывался тот диск, куда ставится PicaView.dll?
Заранее спасибо.

hb860
27-03-2008, 16:12
А если попробобвать regsvr32 /s %programfiles%\PicaView32\PicaView.dll
Может она сама пропишется ?




© OSzone.net 2001-2012