Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Автоматическое редактирование файла.config

Ответить
Настройки темы
Любой язык - [решено] Автоматическое редактирование файла.config

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


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

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


Добрый день.
Вообщем создал инсталятор которые распаковывает приложение в определенную папку. Приложение периодически обновляется (добавляются новые библиотеки и т.д.) в связи с чем в конфигурационный файлик добавляются новые строки. Так как приложение находится на разных объектах и имеет разные коммутационные настройки то запихнуть в инсталятор общий файлик конфигурации я не могу. Идея в том что бы при запуске инсталятора запускался как нибудь .bat или другое средство, который бы добавлял в тестовый фаил нужные строчки, при этом не трогая остальную часть файла.
Конфигурационный файл выглядит примерно так(маленькая часть):
<add key="SkipPreSelect" value="false" />
<add key="RefundLockTime" value="20" />
<add key="UseSverkaDiff" value="false" />
</appSettings>
т.е. новые параметры нужно добавлять между строк <add key="UseDiff" value="false" /> и </appSettings>, а так же учесть что если данные параметры есть то их трогать не нужно.
Подскажите каким способом это можно реализовать? и если есть готовые решения то я буду рад их принять
Заранее большое спасибо.

Отправлено: 14:28, 12-02-2017

 

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


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

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


ДА!!!, вот теперь всё как надо!!! Инсталлятор после распаковки автоматом внес все нужные изменения в cfg , отработало на 5+, все кривые строки и весь мусор почистило и аккуратненько укомплектовалось в cfg.
Спасибо огромное!!!
Тему закрываю.

Отправлено: 18:22, 14-02-2017 | #11



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

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


Ветеран


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

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


Я по-прежнему считаю, что работать с xml следует средствами, для того предназначенными.

Цитата Armsinglom:
новые параметры нужно добавлять между строк <add key="UseDiff" value="false" /> и </appSettings>, а так же учесть что если данные параметры есть то их трогать не нужно. »
Я всё-таки полагаю, что «трогать» их нужно. Например, для того, чтобы задать указанные значения. Например:
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim objDictionary
Dim strSourceFile

Dim objFSO
Dim strKey
Dim objXMLDOMElement


Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

With objDictionary
	.Add "SkipPreSelect",  "false"
	.Add "RefundLockTime", "20"
	.Add "UseSverkaDiff",  "false"
End With

strSourceFile = "cfg.Config"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strSourceFile) Then
	With WScript.CreateObject("Microsoft.XMLDOM")
		.preserveWhiteSpace = True
		.load strSourceFile
		
		For Each strKey In objDictionary.Keys
			Set objXMLDOMElement = .selectSingleNode("/configuration/appSettings/add[@key='" & strKey & "']")
			
			If objXMLDOMElement Is Nothing Then
				Set objXMLDOMElement = .createElement("add")
				objXMLDOMElement.setAttribute "key", strKey
				objXMLDOMElement.setAttribute "value", objDictionary.Item(strKey)
				.selectSingleNode("/configuration/appSettings").appendChild objXMLDOMElement
			Else
				objXMLDOMElement.setAttribute "key", strKey
				objXMLDOMElement.setAttribute "value", objDictionary.Item(strKey)
			End If
			
			Set objXMLDOMElement = Nothing
		Next
		
		objFSO.CopyFile strSourceFile, strSourceFile & ".bak", True
		
		.save strSourceFile
	End With
Else
	WScript.Echo "Can't find source file [" & strSourceFile & "]."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

Если параметров нет — они будут добавлены, если есть — у них будут заданы указанные значения. Оригинальный файл будет сохранён с расширением .bak.

Цитата Armsinglom:
а можно этот скрипт заставить что бы он удалял все строки между
<add key="UseSverkaDiff" value="false" />
и
</appSettings>
и прописывал то что я укажу, т .е. не важно какие между этими строками были параметры и строки, он их затрёт и впишет нужные мне. »
Какой в этом смысл? А если там окажутся нужные узлы? В xml ведь, хоть порядок расположения и присутствует, но, фактически, не используется на практике. Тогда уж стоит удалять всё содержимое узла appSettings и задавать своё.

Последний раз редактировалось Iska, 24-02-2017 в 08:29. Причина: Добавил пропущенную запятую

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:16, 24-02-2017 | #12


Старожил


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

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


Iska, Подскажите, пожалуйста, чем Вы автоматизируете написание вот этого всего?

Option Explicit

Dim objDictionary
Dim strSourceFile

и так далее

Не руками же пишете все? Алгоритм, понятно, руками, а обертку? Вот эти все "WScript.CreateObject" и подобное?
ПС: только начинаю изучать скриптовые языки, перехожу с чистого С.

Отправлено: 13:23, 24-02-2017 | #13


Ветеран


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

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


glukin, редактор Far Manager'а, SciTE. VBSEdit также весьма хорош (но не бесплатен). Главное, никогда не забывайте первой строкой в VBS писать «Option Explicit».

Весьма рекомендую Серый форум и коллекцию ссылок оттуда в: Windows Script Host: Коллекция ссылок, хоть многое на сайте Microsoft уже и убрали (скажем, всё, что было здесь, уже недоступно). Я думаю, что надо бы было выложить всё это куда-нибудь. Сделать какую-нибудь общую инсталляцию и выложить для общего пользования, потому как потребность у народа всё ещё есть.

Последний раз редактировалось Iska, 25-02-2017 в 02:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:27, 25-02-2017 | #14



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Автоматическое редактирование файла.config

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Редактирование swf файла shveicar Вебмастеру 0 05-05-2012 15:32
Доступ - Windows 7 starter. Где находится config.nt и config.sys. Что их заменяет? Надежда_Абрамова@vk Microsoft Windows 7 1 14-03-2012 23:53
ASUS P5E постоянно виснет, или нет файла WINDOWS/SYSTEM32/CONFIG/SYSTEM грузь Непонятные проблемы с Железом 8 13-09-2008 10:04
[решено] Автоматическое редактирование настроек DCOM madmax24 Microsoft Windows NT/2000/2003 2 01-07-2008 08:29
Нужно автоматическое резервное копирование папки config babki Microsoft Windows NT/2000/2003 6 30-11-2006 13:31




 
Переход