Каталоги не создаются во время установки пользовательских действий, установки vs2010
Добрый день, господа / мамы
Пожалуйста, я пытаюсь написать пользовательскую библиотеку действий для установщика vs 2010. В событии установки пользовательского действия я пытаюсь скопировать некоторые файлы (среди которых есть база данных sqlite) в такие места, как "AppData\Local\MySoftware", а некоторые-в папку "Мой документ". Я знаю, что мне следовало бы использовать свойство "файловая система на целевой машине" установочного пакета VS2010 и добавить эти папки, но мне нужно перебрать некоторый список файлов и добавить их в папку "Мой документ" и папку "MySoftware", а также сохранить каталог каждого файла в реестре.
Я создал новый класс, который унаследовал от класса Installer и переопределил событие Install, затем поместил нижеприведенные коды, но ни одна из папок не была создана, ни одно значение не было записано в реестр, и ни одна ошибка не была выброшена, пакет был успешно установлен, но эти каталоги, папки и путь к реестру не были созданы.
Я попытался вызвать библиотеку установки (пользовательскую библиотеку действий, которую я написал) Из события загрузки основной формы, она сработала, и все реестры и папки были созданы, предполагая, что с моими кодами все в порядке.
пожалуйста, помогите мне.
Что я уже пробовал:
public override void Install(System.Collections.IDictionary stateSaver) { base.Install(stateSaver); try { string workingdir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), Application.CompanyName, Application.ProductName); string datapath = Path.Combine(workingdir, "Data"); string logopath = Path.Combine(datapath, "logo01.png"); string bannerpath = Path.Combine(datapath, "banner01.jpg"); string bgpath = Path.Combine(datapath, "defualt1.jpg"); string backupdir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), Application.CompanyName, Application.ProductName); string dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Application.CompanyName, Application.ProductName); string dbdir = Path.Combine(dbpath, "ItemBank.db"); string userpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Application.CompanyName, Application.ProductName, "userdata"); string exampath = Path.Combine(datapath, "Exams"); string configpath = Path.Combine(datapath, "config.gzsettings"); if (!Directory.Exists(exampath)) Directory.CreateDirectory(exampath); if (!Directory.Exists(userpath)) Directory.CreateDirectory(userpath); if (!Directory.Exists(dbpath)) Directory.CreateDirectory(dbpath); if (!Directory.Exists(backupdir)) Directory.CreateDirectory(backupdir); Logger loger = new Logger(workingdir); if (File.Exists(@"Data\ItemBank.db")) { if (File.Exists(dbdir)) { string file = Path.Combine(dbpath, "ItemBank_old.db"); if (File.Exists(file)) { int i = 1; do { file = string.Format("{0}\\ItemBank_old {1}.db", dbpath, i); i++; } while (File.Exists(file)); } File.Copy(dbdir, file); } File.Copy(@"Data\ItemBank.db", dbdir, true); File.Copy(@"Data\ItemBank.db", backupdir + @"\ItemBank.db", true); } if (File.Exists(@"config.gzsettings")) { if (File.Exists(configpath)) { string file = Path.Combine(datapath, "config_old.gzsettings"); if (File.Exists(file)) { int i = 1; do { file = string.Format("{0}\\config_old {1}.gzsettings", datapath, i); i++; } while (File.Exists(file)); } File.Copy(configpath, file); } File.Copy(@"config.gzsettings", configpath, true); File.Copy(@"config.gzsettings", backupdir + @"\config.gzsettings", true); } if (Directory.Exists(@"Data\Exams")) { foreach (string file in Directory.GetFiles(@"Data\Exams")) { int s = file.LastIndexOf("\\"); string pat = Path.Combine(exampath, file.Substring(s)); File.Copy(file, Path.Combine(backupdir, file.Substring(s)), true); } } if (File.Exists(@"Data\default1.jpg")) { File.Copy(@"Data\default1.jpg", bgpath, true); File.Copy(@"Data\default1.jpg", backupdir + @"\default1.jpg", true); } if (File.Exists(@"Data\logo01.jpg")) { File.Copy(@"Data\logo01.jpg", logopath, true); File.Copy(@"Data\logo01.jpg", backupdir + @"\logo01.jpg", true); } RegistryKey rgk_paths = Application.UserAppDataRegistry.CreateSubKey("UsefulPaths"); rgk_paths.SetValue("usersettingspath", configpath); rgk_paths.SetValue("itembankpath", dbdir); rgk_paths.SetValue("appdatapath", datapath); rgk_paths.SetValue("userdatapath", userpath); rgk_paths.SetValue("backuppath", backupdir); if (File.Exists(@"config.gzsettings")) { Settings settings = new Settings(); settings.Load(@"config.gzsettings"); settings["userinfofolderpath"] = userpath; settings["appdatapath"] = datapath; settings["ItemBankPath"] = dbdir; settings["examfolderpath"] = exampath; settings["LogoPath"] = logopath; settings["BackgroundImagePath"] = bgpath; settings["BarnerPath"] = bannerpath; using (RegistryKey rgk_settings = Application.UserAppDataRegistry.CreateSubKey("defaultsettings")) { foreach (var key in settings.GetData().Keys) { rgk_settings.SetValue(key, settings[key]); } rgk_settings.Close(); } settings.Save(backupdir + @"\config.gzsettings"); settings.Save(configpath); } } catch (Exception e) { throw new ApplicationException("Database creation fault: \n" + e.Message); } }</code>