Если у вас есть модуль слияния веб-приложения и модуль слияния exe, включенные в один и тот же проект установки-развертывания, значение Context.Parameters ["AssemblyPath"] внутри настраиваемого действия для каждого модуля слияния будет испорчено. Попробуйте создать проект установки-развертывания, в котором есть веб-проект и проект приложения, например:
- Создание веб-проекта
- Создать модуль слияния для этого веб-проекта
- Создайте обычный проект приложения
- Создать модуль слияния для этого приложения
- Создайте проект установки, который имеет оба вышеупомянутых модуля слияния
- Создание проекта для пользовательского установщика.
- В переопределении метода Commit () перейдите к Context.Parameters ["AssemblyPath"] и отладьте распечатанное значение.
- Добавьте этот вывод проекта настраиваемого действия в оба ваших модуля слияния.
Теперь сделайте установку.
Можно ожидать, что будут напечатаны разные значения в зависимости от того, какой модуль слияния вызывает это настраиваемое действие. Но они одинаковы! Иногда это c: \ inetpub \ wwwroot, а иногда это C: \ MyAppDir ...
Файлы модуля слияния оказываются в правильном месте, хотя:
Содержимое веб-проекта отправляется в C: \ Inetpub \ wwwroot \
в то время как проект приложения переходит в «папку для перенаправления модуля».
Вы также заметите, что customactions.dll, включенный в каждый модуль слияния, окажется в нужных местах (c: \ inetpub \ wwwroot \ в одном случае и «папка для перезапуска модуля» в другом).
Но отладочная распечатка из Context.Parameters ["AssemblyPath"] будет показывать одно и то же значение в ОБА случаях (то есть в обоих модулях слияния). Это будет C: \ Inetpub \ wwwroot \ CustomActions.dll
или <targetdir>
\ CustomActions.dll. Это не верно !
Отладочная печать должна показывать
C: \ Inetpub \ wwwroot \ CustomActions.dll, когда отладочная печать поступает из модуля слияния на основе веб-проекта, и
<targetdir>
\ CustomActions.dll, когда отладочная печать поступает из модуля слияния на основе проекта приложения.
Кто-нибудь знает, почему значение не обновляется для модуля слияния? Это ошибка в Microsoft VS?