add ProxyJump function

This commit is contained in:
redlineo committed 2026-07-23 12:38:13 +03:00
1 parent 56e20e5464
commit 7f0e0fdb23
48 files changed
+3875 -44

No files matched your search

+121
View File
@@ -0,0 +1,121 @@
# Сборка и подключение 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-проектами в целом, а не по факту увиденной ошибки в
этом конкретном решении.