Как я могу развернуть надстройку Outlook с базой данных sqlite, включенной в проект? - PullRequest
1 голос
/ 04 июля 2019

Я пытаюсь отобразить надстройку outlook на компьютере пользователя.Этот аддинн имеет небольшую базу данных, и кажется, что когда расширение начинает связываться с БД, оно не работает.В Visual Studio у меня не было никаких проблем, поэтому я предполагаю, что проблема в момент создания исполняемого файла для пользователя, чтобы установить расширение

. Используя CLickOnce, надстройка устанавливается и отображается в пользовательском обзоре, нокогда он должен взаимодействовать с базой данных, он не работает.Я также попытался добавить проект установки, в который я включил базу данных, но этот метод даже не показывает надстройку в клиентском Outlook

База данных находится в папке в главном каталоге следующим образом:enter image description here

В app.config я использую этот связанный путь:

connectionString="Data Source=|DataDirectory|\DB\pluginDB.db;Version=3;"

И DataDirectory:

string Path = Environment.CurrentDirectory; string[] appPath = Path.Split(new string[] { "bin" },StringSplitOptions.None); AppDomain.CurrentDomain.SetData("DataDirectory", appPath[0]);

И это работает в визуальной студии

1 Ответ

0 голосов
/ 04 июля 2019

Я также попытался добавить проект установки, в который я включил базу данных, но этот метод даже не показывает надстройку в клиентском Outlook

РазвертываниеРешение Office с помощью установщика Windows В статье описываются необходимые шаги для развертывания решений Office.Убедитесь, что вы выполнили все действия, описанные в статье.

Используя CLickOnce, надстройка устанавливается и отображается в пользовательском Outlook, но когда она должна взаимодействовать с базой данных, она не работает.

Кажется, надстройка не может найти файл БД на компьютере пользователя.Я бы порекомендовал добавить любые операторы журнала, чтобы увидеть, что происходит на целевой машине.В любом случае, попробуйте использовать следующую папку вместо Environment.CurrentDirectory one:

  public static string AssemblyDirectory
  {
     get
     {
        string codeBase = Assembly.GetExecutingAssembly().CodeBase;
        UriBuilder uri = new UriBuilder(codeBase);
        string path = Uri.UnescapeDataString(uri.Path);
        return Path.GetDirectoryName(path);
     }
  }
...