Как переместить файл user.config с исходного компьютера на целевой компьютер с сохранением его настроек?
У меня есть стороннее приложение Удалить пустые каталоги, также называемое RED, которое можно скачать здесь:
http://sourceforge.net/projects/rem-empty-dir/files/?source=navbar
Пользовательские настройки приложения следуют стандартной инфраструктуре настроек.Net, они сохраняют свои настройки в таком каталоге:
... \ AppData \ Local \ RED2 \ RED2.ex_Url_ilre4odeu2sx2xsqyulyx2jybty45cd5 \ 2.2.0.0
Моя проблема в том, что я сделаю ignore_directories
Постоянная установка в файле user.config при перемещении папки приложения на другой компьютер означает, что я сохраню пользовательские настройки исходного компьютера при переносе приложения и файла настроек на целевой компьютер, но, конечно, могу скопируйте папку, в которой хранится файл user.config, потому что настройки user.config будут автоматически сохранены в новой папке с новым хешем, полностью отличным от исходного компьютера, поэтому старый файл user.config на целевом ПК будет быть проигнорированным... не признанным.
Это содержимое по умолчанию файла user.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="RED2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<RED2.Properties.Settings>
<setting name="last_used_directory" serializeAs="String">
<value>C:\Users\Administrador\AppData\Local\RED2\RED2.ex_Url_ilre4odeu2sx2xsqyulyx2jybty45cd5\</value>
</setting>
<setting name="infinite_loop_detection_count" serializeAs="String">
<value>10</value>
</setting>
<setting name="pause_between" serializeAs="String">
<value>80</value>
</setting>
<setting name="max_depth" serializeAs="String">
<value>-1</value>
</setting>
<setting name="ignore_directories" serializeAs="String">
<value>System Volume Information
RECYCLER
Papierkorb
Recycled
NtUninstall
$RECYCLE.BIN
GAC_MSIL</value>
</setting>
</RED2.Properties.Settings>
</userSettings>
</configuration>
Это контент, который я сделаю постоянным / переносимым:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="RED2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<RED2.Properties.Settings>
<setting name="last_used_directory" serializeAs="String">
<value>C:\</value>
</setting>
<setting name="infinite_loop_detection_count" serializeAs="String">
<value>10</value>
</setting>
<setting name="ignore_0kb_files" serializeAs="String">
<value>False</value>
</setting>
<setting name="pause_between" serializeAs="String">
<value>80</value>
</setting>
<setting name="max_depth" serializeAs="String">
<value>-1</value>
</setting>
<setting name="keep_system_folders" serializeAs="String">
<value>False</value>
</setting>
<setting name="ignore_directories" serializeAs="String">
<value>$RECYCLE.BIN
C:\Program Files\WindowsApps\Microsoft.WinJS.2.0_1.0.9600.16384_neutral__8wekyb3d8bbwe\microsoft.system.package.metadata
C:\ProgramData\Microsoft\Crypto
C:\ProgramData\Microsoft\Device Stage
C:\ProgramData\Microsoft\DRM
C:\ProgramData\Microsoft\IdentityCRL
C:\ProgramData\Microsoft\RAC\Temp
C:\ProgramData\Microsoft\Windows\DRM
C:\ProgramData\Microsoft\Windows\Sqm
C:\ProgramData\Microsoft\Windows\Start Menu
C:\Users\Administrador\AppData\Local\Microsoft\CLR_v2.0
C:\Users\Administrador\AppData\Local\Microsoft\Feeds Cache
C:\Users\Administrador\AppData\Local\Microsoft\Windows\AppCache
C:\Users\Administrador\AppData\Local\Microsoft\Windows\Application Shortcuts
C:\Users\Administrador\AppData\Local\Microsoft\Windows\Burn
C:\Users\Administrador\AppData\Local\Microsoft\Windows\Explorer\ThumbCacheToDelete
C:\Users\Administrador\AppData\Local\Microsoft\Windows\INetCache\IE
C:\Users\Administrador\AppData\Local\Microsoft\Windows\Notifications
C:\Users\Administrador\AppData\Roaming\Microsoft\Crypto
C:\Users\Administrador\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
C:\Users\Administrador\AppData\Roaming\Microsoft\SystemCertificates
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\AccountPictures
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\Network Shortcuts
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\Recent
C:\Users\Administrador\AppData\Roaming\Microsoft\Windows\Start Menu
C:\Users\Default\AppData\Local\Microsoft\Windows
C:\Users\Default\AppData\Roaming\Microsoft\Windows
C:\Users\Public
C:\Windows\assembly
C:\Windows\Downloaded Program Files
C:\Windows\Help
C:\Windows\ImmersiveControlPanel
C:\Windows\Installer
C:\Windows\Logs
C:\Windows\Microsoft.NET\assembly
C:\Windows\Offline Web Pages
C:\Windows\Resources\Themes\aero
C:\Windows\ServiceProfiles
C:\Windows\servicing
C:\Windows\System32\catroot
C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\CLR_v4.0
C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows
C:\Windows\System32\config\systemprofile\AppData\Roaming\Microsoft\SystemCertificates
C:\Windows\System32\DriverStore\Temp
C:\Windows\System32\LogFiles
C:\Windows\System32\Microsoft\Crypto
C:\Windows\System32\ProximityToast
C:\Windows\System32\RasToast
C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Microsoft\CLR_v4.0_32
C:\Windows\SysWOW64\config\systemprofile\AppData\LocalLow\Microsoft
C:\Windows\SysWOW64\DriverStore\FileRepository
C:\Windows\SysWOW64\ProximityToast
C:\Windows\SysWOW64\RasToast
C:\Windows\Temp
C:\Windows\WinSxS\Backup
C:\Windows\WinSxS\InstallTemp
C:\Windows\WinSxS\Temp
System Volume Information</value>
</setting>
<setting name="delete_stats" serializeAs="String">
<value>3496</value>
</setting>
</RED2.Properties.Settings>
</userSettings>
</configuration>
У меня вопрос, я могу переопределить свойства файла настроек или другой обходной путь, который может сделать файл user.config действительно переносимым, избегая проблемы хэша каталога?
Ну, я вполне уверен, что это возможно, потому что я делал это в прошлом с другим файлом user.config другого приложения.Net, я не могу точно вспомнить, что я сделал, потому что было много проб и ошибок, но я думаю, я создал новый файл app.config в том же каталоге папки приложения и просто скопировал полное содержимое файла user.config, хранящегося в каталоге AppData, в мой новый файл app.config в рабочем каталоге приложения, а затем редактировал в Я хотел, чтобы свойства в файле app.config сохранили пользовательское значение по умолчанию, когда приложение впервые создает файл user.config в каталоге AppData, но на этот раз этот метод не сработал для этого приложения RED2.exe.
Я попробовал некоторые базовые идеи, такие как добавление user.config в ту же папку, где хранится RED2.exe, затем добавление в файл конфигурации, которая мне нравится, также я сделал то же самое, создав app.config, все работало, но, может быть, я сделал что-то не так во время процедуры.
2 ответа
Для вас будет проще, если у вас есть доступ к коду. Код RED2 доступен на Github здесь. Вы можете скачать и настроить его в соответствии с вашими целями.
Это не только ссылка, ответ. Как решение конкретной проблемы, доступ к коду является лучшим решением в этом случае. Я просто делюсь ссылкой на общедоступную кодовую базу, чтобы все знали.
Я решил эту проблему, загрузив исходный код по адресу https://github.com/hxseven/Remove-Empty-Directories и собрав по умолчанию файл ExeName.exe.config, а затем в его userSettings
В разделе я могу изменить настройки, чтобы сохранить пользовательскую конфигурацию по умолчанию при копировании каталога приложения на другой компьютер, включая файл ExeName.exe.config, который содержит настройки для каждого пользователя, это очень просто.
Уловка, чтобы сделать это было этим.
Похоже, он не отличается от файла user.config, который создается в папке Local AppData при сохранении настроек для каждого пользователя, поэтому я полагаю, что более простым способом будет выполнить требуемые изменения в пользовательском интерфейсе для создания файла в папке AppData, а затем переименуйте созданный файл user.config в RED2.exe.config и сохраните его в рабочем каталоге приложения, а затем скопируйте его на другой компьютер.