Пользовательское действие не запускается

Недавно мне было поручено создать пакет развертывания для приложения, в котором, кстати, я совершенно новичок. Пока все хорошо .. Теперь есть требование извлечь файлы из zip-файла, который будет включен в установочный файл. Итак, мне пришлось написать собственные действия в разделе «Фиксация» класса установщика. Я добавил класс установщика в новый проект типа «Библиотека классов» в том же решении. Я написал код после base.Commit (savedState).

Я попытался показать MessageBox в точке входа в событие, использовал Debugger.Launch (), Debugger.Break (), но каким-то образом, независимо от того, что я делаю, кажется, что настраиваемое действие вообще не желает быть запущенным, и приложение просто устанавливается сам. Я искал множество сайтов и блогов, но пока безрезультатно.

Я назначил свой класс установщика (в моем случае SampleApp.exe) всем режимам настраиваемого действия (установка, фиксация, откат и удаление) в проекте развертывания. Любая помощь.

P.S. Я использую проект установки Visual Studio 2010.

Заранее спасибо!


person Dibendu    schedule 17.02.2015    source источник


Ответы (2)


Вероятно, вам следует попробовать библиотеку классов Dll, а не исполняемый файл (который обычно предназначен для чего-то вроде службы).

Вам не нужны все узлы, если все, что вы делаете, - это вызов в Commit. А зачем совершать? В большинстве случаев установка выполняется одинаково.

Если вы не видите MessageBox, вероятно, ваш CA не вызывается, и это может быть потому, что это не библиотека классов. Обратите внимание, что ваш ЦС не работает в интерактивном контексте пользователя - он вызывается из процесса msiexec, запущенного с системной учетной записью, поэтому вы должны очень четко указать (скажем) путь к zip-файлу, и любые папки профиля пользователя, вероятно, будут сбой, потому что в системной учетной записи их на самом деле нет.

person PhilDW    schedule 17.02.2015
comment
Я использую dll библиотеки классов, так как класс установщика находится в проекте типа «Библиотека классов». Он находится в папке ClassLibrary1 \ bin \ Debug, содержащей файл ClassLibrary1.dll. Что касается SampleApp, у меня есть только файл .exe, файла .dll нет. Это приложение в форме Windows. Я использую Commit, потому что я просто хочу убедиться, что настраиваемое действие выполняется, потому что никакое настраиваемое действие не будет запускаться до события Install ... Я использую проект установки VS! - person Dibendu; 18.02.2015
comment
Нужно ли мне добавить ClassLibrary1.dll в режим фиксации настраиваемого действия? ClassLibrary1.dll - это проект типа Class Library ... - person Dibendu; 18.02.2015
comment
Вам нужна библиотека классов Dll, потому что вам нужно вызывать методы установки в библиотеке классов Dll, а не в exe. Да, добавьте эту Dll в узел установки. Этот msdn.microsoft.com/en- us / library / vstudio / и devcity.net/Articles/339/1 /article.aspx должен помочь. - person PhilDW; 18.02.2015
comment
Большое спасибо ... ваш совет действительно сработал :) Я добавлял ClassLibrary1.dll в узлы установки, которые не работали, и вызывал ошибку 1001. Вместо этого я добавил основной вывод из ClassLibrary1 (Active) ... И бинго! Еще раз спасибо!! :) - person Dibendu; 23.02.2015

Что это за файлы и где они находятся на диске? Если это файлы профиля пользователя, вы можете установить zip-файлы в папку на каждом компьютере, а затем заставить само приложение разархивировать файлы в нужное место при первом запуске . Распаковка изнутри вашей установки не является хорошей практикой - это подвержено ошибкам и плохой дизайн.

Использование приложения обеспечивает правильную обработку исключений и интерактивность (пользователь может быть проинформирован, если что-то пойдет не так). Установите некоторые флаги реестра в HKCU, когда вы завершили разархивирование, чтобы это не происходило более одного раза, и выполняйте разархивирование один раз для каждого пользователя.

person Stein Åsmul    schedule 17.02.2015
comment
Это не файлы профиля пользователя, а просто zip-файл mongoDB. Они будут извлечены в то же место, где будет установлено основное приложение. Как я могу распаковать файлы в моем приложении? Я использую проект установки VS. - person Dibendu; 18.02.2015