C # Автономное обновление - PullRequest
0 голосов
/ 06 ноября 2010

в моем новом проекте (windows-C # -vs2008) я хочу, чтобы исполняемый файл мог автономно обновлять себя - возможно, с сетевого сервера) затем измените метод CurrentDomain_AssemblyResolve ()

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

таким образом, чтобы он сначала проверял наличие библиотеки в изолированном хранилище, а затем загружал ее из исполняемого файла.Но что, если я захочу что-то изменить в главном exe.[Я попытался создать проект загрузчика (console ap), из которого он вызывает мою основную программу (изменил вывод как dll), однако на этот раз событие разрешения сборки не получает триггер, потому что ссылочные dll генерируются в папке bin нового загрузчикапроект во время компиляции] Любая помощь будет принята с благодарностью ..

public static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            try
            {
                string assemName = new AssemblyName(args.Name).Name;

                object i_StoreRootDir = i_StorageFile.GetType().GetField
                    ("m_RootDir", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(i_StorageFile);

                string i_StorePath = CombinePaths(i_StoreRootDir.ToString(), I_STOREDIR, assemName, DLL_EXT);

                if (File.Exists(i_StorePath))
                {
                    return Assembly.LoadFrom(i_StorePath);
                }
                else
                {
                    //load it from resource.
                    return null;
                }
            }
            catch (Exception)
            {
                throw;
            }

1 Ответ

1 голос
/ 06 ноября 2010

Вы можете взглянуть на развертывание ClickOnce как часть платформы.Вы также можете оформить заказ wyUpdate .Также есть BitsUpdater .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...