Statistics
| Branch: | Revision:

root / trunk / Pithos.Client.WPF / ShellExtensionController.cs @ f2d88248

History | View | Annotate | Download (2.2 kB)

1 9bae55d1 Panagiotis Kanavos
// -----------------------------------------------------------------------
2 9bae55d1 Panagiotis Kanavos
// <copyright file="ShellExtensionController.cs" company="Microsoft">
3 9bae55d1 Panagiotis Kanavos
// TODO: Update copyright text.
4 9bae55d1 Panagiotis Kanavos
// </copyright>
5 9bae55d1 Panagiotis Kanavos
// -----------------------------------------------------------------------
6 9bae55d1 Panagiotis Kanavos
7 9bae55d1 Panagiotis Kanavos
using System.Collections;
8 9bae55d1 Panagiotis Kanavos
using System.IO;
9 9bae55d1 Panagiotis Kanavos
using System.IO.IsolatedStorage;
10 9bae55d1 Panagiotis Kanavos
using System.Runtime.Serialization;
11 0c02aa65 Panagiotis Kanavos
12 9bae55d1 Panagiotis Kanavos
13 9bae55d1 Panagiotis Kanavos
namespace Pithos.Client.WPF
14 9bae55d1 Panagiotis Kanavos
{
15 9bae55d1 Panagiotis Kanavos
    using System;
16 9bae55d1 Panagiotis Kanavos
    using System.Collections.Generic;
17 9bae55d1 Panagiotis Kanavos
    using System.Linq;
18 9bae55d1 Panagiotis Kanavos
    using System.Text;
19 9bae55d1 Panagiotis Kanavos
20 9bae55d1 Panagiotis Kanavos
    /// <summary>
21 9bae55d1 Panagiotis Kanavos
    /// TODO: Update summary.
22 9bae55d1 Panagiotis Kanavos
    /// </summary>
23 9bae55d1 Panagiotis Kanavos
    public class ShellExtensionController
24 9bae55d1 Panagiotis Kanavos
    {
25 9bae55d1 Panagiotis Kanavos
        #region Shell Extensions
26 9bae55d1 Panagiotis Kanavos
        public void UnregisterExtensions()
27 9bae55d1 Panagiotis Kanavos
        {
28 9bae55d1 Panagiotis Kanavos
            using (var installer = new ProjectInstaller())
29 9bae55d1 Panagiotis Kanavos
            {
30 9bae55d1 Panagiotis Kanavos
                IDictionary state = LoadState();
31 9bae55d1 Panagiotis Kanavos
                installer.Uninstall(state);
32 9bae55d1 Panagiotis Kanavos
            }
33 9bae55d1 Panagiotis Kanavos
        }
34 9bae55d1 Panagiotis Kanavos
35 9bae55d1 Panagiotis Kanavos
        public void RegisterExtensions()
36 9bae55d1 Panagiotis Kanavos
        {
37 9bae55d1 Panagiotis Kanavos
            using (var installer = new ProjectInstaller())
38 9bae55d1 Panagiotis Kanavos
            {
39 9bae55d1 Panagiotis Kanavos
                IDictionary state = new Dictionary<object, object>();
40 9bae55d1 Panagiotis Kanavos
                installer.Install(state);
41 9bae55d1 Panagiotis Kanavos
                SaveState(state);
42 9bae55d1 Panagiotis Kanavos
43 9bae55d1 Panagiotis Kanavos
            }
44 9bae55d1 Panagiotis Kanavos
        }
45 9bae55d1 Panagiotis Kanavos
46 9bae55d1 Panagiotis Kanavos
        private static void SaveState(IDictionary state)
47 9bae55d1 Panagiotis Kanavos
        {
48 5bcf6d70 Panagiotis Kanavos
            using (var store = IsolatedStorageFile.GetUserStoreForAssembly())
49 9bae55d1 Panagiotis Kanavos
            using (var file = store.CreateFile("PithosManualInstallFile"))
50 9bae55d1 Panagiotis Kanavos
            {
51 9bae55d1 Panagiotis Kanavos
                var serializer = new NetDataContractSerializer();
52 9bae55d1 Panagiotis Kanavos
                serializer.Serialize(file, state);
53 9bae55d1 Panagiotis Kanavos
            }
54 9bae55d1 Panagiotis Kanavos
        }
55 9bae55d1 Panagiotis Kanavos
56 9bae55d1 Panagiotis Kanavos
        private static IDictionary LoadState()
57 9bae55d1 Panagiotis Kanavos
        {
58 5bcf6d70 Panagiotis Kanavos
            using (var store = IsolatedStorageFile.GetUserStoreForAssembly())
59 9bae55d1 Panagiotis Kanavos
            {
60 9bae55d1 Panagiotis Kanavos
                if (!store.FileExists("PithosManualInstallFile"))
61 9bae55d1 Panagiotis Kanavos
                    return new Dictionary<object, object>();
62 9bae55d1 Panagiotis Kanavos
63 9bae55d1 Panagiotis Kanavos
                using (var file = store.OpenFile("PithosManualInstallFile", FileMode.Open))
64 9bae55d1 Panagiotis Kanavos
                {
65 9bae55d1 Panagiotis Kanavos
                    var serializer = new NetDataContractSerializer();
66 9bae55d1 Panagiotis Kanavos
                    var state = serializer.Deserialize(file);
67 9bae55d1 Panagiotis Kanavos
                    return (IDictionary)state;
68 9bae55d1 Panagiotis Kanavos
                }
69 9bae55d1 Panagiotis Kanavos
            }
70 9bae55d1 Panagiotis Kanavos
        }
71 9bae55d1 Panagiotis Kanavos
72 9bae55d1 Panagiotis Kanavos
        #endregion
73 9bae55d1 Panagiotis Kanavos
    }
74 9bae55d1 Panagiotis Kanavos
}