Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка приложений (http://forum.oszone.net/forumdisplay.php?f=61)
-   -   [решено] как добавить путь к текущей директории в reg файл из bat файла ? (http://forum.oszone.net/showthread.php?t=103056)

mitiya 18-03-2008 01:47 762568

как добавить путь к текущей директории в reg файл из bat файла ?
 
смысл вот в чем :
для перепаковки программы беру ее ветку реестра , а там в некоторых ключах прописан путь к той папке куда установлена программа.
Соответственно для того чтобы перепакованая прога могла ставится куда угодно надо в 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 762657

используйте Переменные среды

mitiya 18-03-2008 19:05 763145

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

Petya V4sechkin 18-03-2008 21:23 763225

Цитата:

Цитата mitiya
а %cd% выдает туь с "\"

Замена одинарных \ на двойные:
Код:

Set CD2=%CD:\=\\%
Echo %CD2%

Код:

Set /?

mitiya 18-03-2008 22:13 763277

О , Спасибо !!! все ок.

werwolf-basic 26-03-2008 23:54 768576

А если через reg.exe в параметре /v указать "%~d0" так и будет в реестре

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

elChoopacabra 27-03-2008 13:52 768928

Очень интересная тема т.к. перепаковываю практически весь свой софт, и есть иногда сложности...
Но из постов мало что понял... Буду очень признателен, если объясните на конкретном примере...
Допустим есть
Код:

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 769053

А если попробобвать
Код:

regsvr32 /s %programfiles%\PicaView32\PicaView.dll
Может она сама пропишется ?


Время: 03:26.

Время: 03:26.
© OSzone.net 2001-