Как переместить файл user.config с исходного компьютера на целевой компьютер, сохранив его настройки?

У меня есть стороннее приложение Удалить пустые каталоги, также известное как КРАСНЫЙ, которое можно скачать здесь:

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, все сработало, но, возможно, я сделал что-то не так во время процедуры.


person ElektroStudios    schedule 21.09.2015    source источник
comment
Не кодируйте путь жестко. Используйте 1_. См. msdn.microsoft.com/en-us/ библиотека / bb397755 (версия = 110) .aspx   -  person Vivek Jain    schedule 21.09.2015
comment
user.settings, как следует из названия, предназначен для одного конкретного пользователя. Если вы хотите получить портативную версию, я бы посоветовал вам самостоятельно позаботиться о настройках, используя сериализацию json или что-то подобное.   -  person quadroid    schedule 21.09.2015
comment
@Console Я намерен добавить приложение в персонализированный установщик (используя InnoSetup), а затем, во время установки, я мог бы запустить автоматизированный инструмент, разработанный в .Net (VB.Net или еще C #), который мог бы сделать трюк, вопрос в том. .. Как?. Но в любом случае я думаю, что это можно было бы сделать без такого взаимодействия, без разработки приложения, просто создав правильное содержимое файла app.config или user.config, которое будет сохраняться при его копировании на другой ПК (потому что снова я упоминаю, что сделал это в прошлое). Спасибо!   -  person ElektroStudios    schedule 21.09.2015
comment
@theghostofc Извините, но вы читали часть, в которой я упоминаю стороннее приложение? У меня нет исходного кода, в котором можно использовать инфраструктуру настроек. В любом случае спасибо!   -  person ElektroStudios    schedule 21.09.2015
comment
@ElektroStudios, извините, я пропустил эту часть. Виноват! Код RED2 доступен на Github github.com/hxseven/Remove-Empty-Directories. Вы можете скачать и немного подправить. :)   -  person Vivek Jain    schedule 21.09.2015
comment
что !! как вы его нашли? Очень хорошо знать, большое спасибо, потому что это решает проблему ... Я внес необходимые изменения в исходный код, а затем проблема решена, но, поскольку я задал очень конкретный вопрос, я хотел бы знать в любом случае решение моего вопроса. Я все пытаюсь выяснить. Еще раз спасибо, чувак !.   -  person ElektroStudios    schedule 21.09.2015


Ответы (2)


Вам будет проще, если у вас будет доступ к коду. Код RED2 доступен на Github здесь. Вы можете загрузить и немного настроить его для своих целей.

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

person Vivek Jain    schedule 22.09.2015
comment
Я сказал вознаграждение за награду, извините, у меня возникла путаница, потому что в другом вопросе, где у меня есть награда. еще раз спасибо, - person ElektroStudios; 22.09.2015
comment
@ElektroStudios, не беспокойтесь. Рад, что смог помочь :) - person Vivek Jain; 22.09.2015

Я решил это, загрузив исходный код по адресу https://github.com/hxseven/Remove-Empty-Directories и создание по умолчанию ExeName.exe.config, затем в разделе userSettings я могу изменить настройки, чтобы сохранить пользовательскую конфигурацию по умолчанию при копировании каталога приложения на другой компьютер, просто включая ExeName.exe.config, который содержит индивидуальные настройки пользователя, это очень просто.

Уловка, чтобы сделать это, заключалась в следующем.

Похоже, он не отличается от файла user.config, который создается внутри папки Local AppData при сохранении настроек для каждого пользователя, поэтому я полагаю, что проще всего будет выполнить желаемые изменения. в пользовательском интерфейсе для создания файла в папке AppData, а затем переименуйте сгенерированный файл user.config в RED2.exe.config и сохраните его в рабочем каталоге приложения, затем скопируйте его на другой компьютер.

person ElektroStudios    schedule 21.09.2015