2015-06-09 3 views
0

Целью является остановка установки установки после того, как она начала установку службы.Остановите установку installshield, если файл не найден в vb.net.

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

Чтобы контролировать это, я вызываю событие BeforeInstall от ServiceInstaller.

Private Sub ServiceInstaller1_BeforeInstall(sender As Object, e As InstallEventArgs) Handles ServiceInstaller1.BeforeInstall 
    Dim filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location).Replace("\", "\\") 
    If Not File.Exists(filePath) & "\file.txt" Then 
     MsgBox("The specified file is not found in that path, the installation will stop.") 
     'Missing code 
    End If 
End Sub 

Я попытался с End, Exit, и многие другие, но никто не останавливает установку.

+0

Возможно, вы захотите показать диалоговое окно «Dialog», а затем решите закрыть отсек для установки, назвав что-то вроде «return 0» в вашей программе. –

+0

Какой диалог? Как я могу это сделать? Пожалуйста, объясните это немного больше. – Asa

+0

Окно «Диалоговое окно», общий способ уведомления пользователей, например, по решению, например, добавление кнопок «ОК» или «Отмена». –

ответ

0

Очевидно, что вы можете отобразить не найденный файл, вероятно, Dialog и вызвать метод RoleBack, который откатывает информацию об обслуживании приложения, записанную в реестр процедурой установки. Этот метод предназначен для использования инструментами установки, которые автоматически обрабатывают соответствующие методы. (Переопределяет Installer.Rollback(IDictionary)).

Следует учитывать, что методы ServiceInstaller см. The MSDN. И для использования RollBack метода см This MSDN Documentation, который замечает:

При переопределении метода Rollback в производном классе, обязательно вызова Rollback метода базового класса первого в производном методе. Операция отката A восстанавливает компьютер до состояния, которое оно было до .

+0

Я вижу ... И как я могу принять состояние момента перед установкой? Я должен использовать IDictionary? Как я могу использовать его? – Asa

+0

@Asa О, моя ошибка :(Я дважды ввел ссылку (избыточно). Проверьте вторую ссылку в моем ответе, которая ссылается на другую страницу. –

+0

@Asa Вы не можете получить доступ к 'savedState' перед установкой! Поскольку он принадлежит классу ! 'public override void Откат ( \t IDictionary savedState )' –

Смежные вопросы