Files
ssh-access-tui/outlook-bulk-sender/docs/BUILD.md
T
2026-07-23 12:38:13 +03:00

122 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Сборка и подключение BulkArchiveMailer
Это решение написано и ни разу не собрано в среде без Windows/Visual
Studio/.NET SDK — весь код написан вручную по памяти о реальных
VSTO/Outlook Interop API, но **первая сборка обязательно должна пройти на
вашей машине**, прежде чем этому плагину можно будет доверять. Ниже —
пошаговая инструкция и список мест, где по опыту чаще всего что-то не
сходится при первом открытии вручную написанного `.csproj`.
## Требования
- Windows 10/11.
- Классический Outlook (Win32 или Microsoft 365 C2R) — **не** "новый
Outlook" (он не поддерживает VSTO).
- Visual Studio 2022 (Community — бесплатная) с установленным workload'ом
**".NET desktop development"** И **"Office/SharePoint development"**
(последний ставит шаблоны VSTO, VSTO Runtime и Office Developer Tools —
без него сборка `BulkArchiveMailer.AddIn` не найдёт
`Microsoft.Office.Tools.*` сборки).
- Установленный **VSTO Runtime** (обычно ставится вместе с
Office/SharePoint workload'ом; если Outlook жалуется на "not a valid
Office Add-in" при загрузке — скорее всего он не установлен отдельно,
доустановите "Microsoft Visual Studio 2010 Tools for Office Runtime" /
актуальную версию VSTO Runtime).
## Открытие и сборка
1. Откройте `BulkArchiveMailer.sln` в Visual Studio.
2. Дайте NuGet восстановить пакеты (`BulkArchiveMailer.Core.Tests` тянет
xUnit + `Microsoft.NET.Test.Sdk`; `BulkArchiveMailer.Core` и
`BulkArchiveMailer.AddIn` NuGet-пакетов не используют вовсе — это
осознанное решение, см. `AppSettings.cs`, чтобы не зависеть от
восстановления пакетов в непроверенной среде).
3. Соберите решение (Build → Build Solution). Скорее всего первая сборка
пройдёт чисто, но если нет — см. раздел "Типичные проблемы" ниже.
4. `BulkArchiveMailer.Core.Tests` можно запустить через Test Explorer —
там сейчас один smoke-тест (`FilenameParserTests`), подтверждающий, что
тестовый проект в принципе собирается и видит `Core`. Полное покрытие
тестами — отдельная задача (dotnet-tester), не часть этой сборки.
## Отладка (F5)
Проект `BulkArchiveMailer.AddIn` настроен как VSTO Outlook Add-in — при
нажатии F5 (с ним как стартовым проектом) Visual Studio должна сама
зарегистрировать временную запись в реестре и запустить Outlook с уже
загруженным плагином. Если Outlook уже был открыт — закройте его перед F5.
Кнопка ленты **"Массовая рассылка"** появляется на вкладке "Главная"
основного окна Outlook (список писем), в группе "ssh-access-tui".
## Установка вне Visual Studio (ручной sideload)
Это внутренний инструмент, поэтому здесь используется **sideload через
реестр**, а не полноценная публикация ClickOnce с веб-сервером или
раскатка через GPO (это отдельная задача на будущее, если понадобится
массово ставить плагин большому числу операторов).
1. Соберите решение в конфигурации Release (Build → Configuration Manager
→ Release, затем Build Solution).
2. В `BulkArchiveMailer.AddIn\bin\Release\` после сборки появятся, среди
прочего, `BulkArchiveMailer.AddIn.dll` и
`BulkArchiveMailer.AddIn.vsto` (манифест генерируется автоматически
MSBuild-таргетами VSTO — в исходниках его нет и не должно быть,
`.gitignore` его игнорирует).
3. Скопируйте всю папку `bin\Release\` в постоянное место на диске
оператора (например, `C:\Tools\BulkArchiveMailer\`) — VSTO plug-in
должен запускаться из стабильного пути, а не из папки сборки, которая
может быть пересобрана/удалена.
4. Добавьте ключ реестра, которым Outlook находит плагин:
```
[HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\BulkArchiveMailer.AddIn]
"Description"="Массовая рассылка архивов ssh-access-tui"
"FriendlyName"="BulkArchiveMailer"
"Manifest"="file:///C:\\Tools\\BulkArchiveMailer\\BulkArchiveMailer.AddIn.vsto|vstolocal"
"LoadBehavior"=dword:00000003
```
(можно сохранить как `.reg`-файл и применить двойным щелчком).
5. Запустите Outlook. Поскольку манифест не подписан сертификатом
(`SignManifests=false` в `.csproj` — см. комментарий там же о причине),
при первой загрузке Outlook, скорее всего, покажет предупреждение
"не удалось проверить издателя" или подобное. Варианты:
- принять предупреждение вручную (для одного оператора это разумно);
- добавить папку с плагином в доверенные расположения для VSTO:
`HKEY_CURRENT_USER\Software\Microsoft\VSTO\Security\Trust Manager\TrustedFolders\<любой уникальный ключ>` = путь к папке с `.vsto`, `String` REG_SZ.
- для более широкой раскатки — подписать манифест сертификатом
(Project Properties → Signing в Visual Studio) и настроить
доверие централизованно (GPO/сертификат в доверенных издателях) —
это уже упомянутое будущее развитие, не сделано в этой версии.
## Типичные проблемы при первом открытии
Поскольку `.csproj`/`.sln` в этом решении написаны вручную (без мастера
Visual Studio, из-за отсутствия здесь Windows/VS/.NET SDK для
генерации), возможны мелкие расхождения с тем, что сгенерировал бы
реальный мастер "Outlook VSTO Add-in". Если сборка `BulkArchiveMailer.AddIn`
падает на ссылках `Microsoft.Office.*`/`Microsoft.VisualStudio.Tools.*`:
1. Проверьте, что workload "Office/SharePoint development" точно
установлен (Visual Studio Installer → Modify).
2. Если конкретная ссылка подсвечена жёлтым в Solution Explorer — правой
кнопкой на неё → Properties → сверьте путь; как правило, достаточно
удалить и заново добавить через Add Reference → Assemblies →
Extensions, найдя те же имена (`Microsoft.Office.Tools.Outlook` и
т.д.) — они должны там появиться, если workload установлен.
3. Если `Microsoft.Office.Interop.Outlook`/`office` не резолвятся с
версией `15.0.0.0` — это нормально расходится в зависимости от того,
какая версия Office PIA установлена; смените `Version=` в ссылке (в
`.csproj`, ищите `Microsoft.Office.Interop.Outlook`/`office`) на
установленную (`14.0.0.0` для Office 2010 PIA и т.п.) либо просто
удалите атрибут версии в Solution Explorer и добавьте заново через
Add Reference — Visual Studio подставит то, что реально стоит на
машине.
4. TargetFrameworkVersion `v4.8` требует установленного .NET Framework 4.8
Developer Pack — Visual Studio предложит установить его сама при
открытии, если его нет.
Ничего из перечисленного не проверялось вживую — список составлен по
опыту работы с VSTO-проектами в целом, а не по факту увиденной ошибки в
этом конкретном решении.