powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как использовать класс из Microsoft.Deployment.WindowsInstaller?
9 сообщений из 9, страница 1 из 1
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806036
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой класс, используемый в CustomAction функциях инсталлера:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
namespace Microsoft.Deployment.WindowsInstaller
{
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using System.Reflection;
    using System.Text;
    
    public sealed class Session : InstallerHandle, IFormatProvider
    {
...



Хочу протестировать свою
Как его использовать CustomAction функцию из приложения, она по формату ринимает один параметр, типа такого:

Код: c#
1.
public static ActionResult DoAction1(Session s)



Не вижу как создать объект класса Session, конструктора явного нет:

Код: c#
1.
2.
3.
Session s = ?
s["VAR"]="123";
ActionResult  = DoAction1(s);
...
Рейтинг: 0 / 0
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806160
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh,

Для Unit-теста? Создавайте Fake-сборки.
...
Рейтинг: 0 / 0
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806197
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVWinnipuh,

Для Unit-теста? Создавайте Fake-сборки.

ну, юнит, не юнит, но мне бы надо и приложения, так проще в отладчике оттестировать и пр...
...
Рейтинг: 0 / 0
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806246
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для Unit-теста все прозрачно:
Код: c#
1.
Session s= new Microsoft.Deployment.WindowsInstaller.Fakes.ShimSession().Instance;


Тут есть возможность реализовывать методы замещения, например чтобы корректно тестировать код типа:
Код: c#
1.
s["VAR"]="123";



А если так в приложении… Ну попробуйте таким видом (или аналогично):
Код: c#
1.
Session s = Session.FromHandle(new IntPtr(1), false);


Только что дальше делать то будете?
...
Рейтинг: 0 / 0
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806485
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVДля Unit-теста все прозрачно:
Код: c#
1.
Session s= new Microsoft.Deployment.WindowsInstaller.Fakes.ShimSession().Instance;


Тут есть возможность реализовывать методы замещения, например чтобы корректно тестировать код типа:
Код: c#
1.
s["VAR"]="123";



А если так в приложении… Ну попробуйте таким видом (или аналогично):
Код: c#
1.
Session s = Session.FromHandle(new IntPtr(1), false);


Только что дальше делать то будете?

Microsoft.Deployment.WindowsInstaller. Fakes .ShimSession().Instance - такого не находит.
А попытка FromHandle приводит к ошибке

An unhandled exception of type 'Microsoft.Deployment.WindowsInstaller.InvalidHandleException' occurred in Microsoft.Deployment.WindowsInstaller.dll
Additional information: The handle is invalid.
...
Рейтинг: 0 / 0
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806604
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WinnipuhMicrosoft.Deployment.WindowsInstaller. Fakes .ShimSession().Instance - такого не находит.

Необходимо добавить сборку имитаций . Но это для Unit-теста, я писал выше.

WinnipuhА попытка FromHandle приводит к ошибке

Создание приводит (какая версия WiX?)? Или дальнейшее использование?
Вообще-то не ясно, зачем в рабочем коде создавать самостоятельно объект Session? При вызове Custom Action он уже создан, разве там проверить нельзя?
...
Рейтинг: 0 / 0
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806644
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVWinnipuhMicrosoft.Deployment.WindowsInstaller. Fakes .ShimSession().Instance - такого не находит.

Необходимо добавить сборку имитаций . Но это для Unit-теста, я писал выше.

WinnipuhА попытка FromHandle приводит к ошибке

Создание приводит (какая версия WiX?)? Или дальнейшее использование?
Вообще-то не ясно, зачем в рабочем коде создавать самостоятельно объект Session? При вызове Custom Action он уже создан, разве там проверить нельзя?

Я хочу некоторые функции из сборки CustomActions проверить в отладичке, для этого хотелось бы вызвать функцию в обычном приложении и передать параметры в Session. и далее отладчиком.

Например, одна из функция делает проверки и настройки в IIS, мне нужно всего лишь передать 2-3 параметра: имя машины, имя вебсайта, имя приложения и т.д.
...
Рейтинг: 0 / 0
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806659
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh,

Ну я вижу два способа:
1. Как уже предлагал: создаем Unit-тест и там проверяем.
2. Если есть исходники Custom Action: прям в рабочем коде, в нужном методе, самым первым (перед остальным кодом) пишем System.Diagnostics.Debugger.Launch(). Далее запускаем инсталлятор. Когда дойдет до того действия появится окошко с предложением отладки.
...
Рейтинг: 0 / 0
Как использовать класс из Microsoft.Deployment.WindowsInstaller?
    #38806680
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey TSVWinnipuh,

Ну я вижу два способа:
1. Как уже предлагал: создаем Unit-тест и там проверяем.
2. Если есть исходники Custom Action: прям в рабочем коде, в нужном методе, самым первым (перед остальным кодом) пишем System.Diagnostics.Debugger.Launch(). Далее запускаем инсталлятор. Когда дойдет до того действия появится окошко с предложением отладки.

Спасибо, согласен, но хотелось, чтобы побыстрее как-то.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как использовать класс из Microsoft.Deployment.WindowsInstaller?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]