Я не могу заставить работать нестандартное действие. Я мог бы сделать это неправильно. Вот что я пытаюсь сделать:
Я хотел бы запустить настраиваемое действие в моей установке приложения (проект установщика Visual Studio), которая запускает исполняемый файл. Исполняемый файл просто выполняет некоторые задачи по копированию файлов system.io, и я подтвердил, что исполняемый файл при запуске сам по себе работает отлично.
- Я создал проект установщика
- добавил exe в папку приложения
- перешел к пользовательским действиям и добавил exe к шагу фиксации
- InstallerClass имеет значение true
- Запустил установщик, но не получил желаемого результата. Поэтому я добавил строку для записи в журнал Windows. Посмотрел в журнале Windows после повторного запуска установщика, и он выглядел так, как будто не запускался. Добавил debug.break в исполняемый код Unisntalled / переустановил мой установщик, и ничего не произошло. Я наконец сидел и наблюдал за процессами и подтвердил, что exe никогда не будет выполнен.
Есть мысли?
Целевые системы: Windows XP, Vista
Visual Studio Версия: 2008 Sp1
Язык: VB.NET
Целевые рамки: 2.0
Отлично. Я думаю, что я становлюсь ближе благодаря коду, который вы разместили. Я преобразовал его в VB, и я получаю эту ошибку: Не удается найти myexename.savedstate. Я предполагаю, что должен передать что-то подписчикам, которых вы разместили, но я не знаю что. (кстати, это консольное приложение) Я добавил ссылку на System.Configuration.Install.dll и вот мой код:
Imports System.ComponentModel
Imports System.Configuration.Install
_
Public Class ApplicationInstaller
Inherits Installer
Public Overloads Overrides Sub Commit(ByVal savedState As IDictionary)
' Do some work on commit
The_Sub_I_Want_To_Run()
End Sub
Public Overloads Overrides Sub Install(ByVal stateSaver As IDictionary)
' Do some work on install
End Sub
Public Overloads Overrides Sub Uninstall(ByVal savedState As IDictionary)
' Do some work on uninstall
End Sub
End Class
Я не назвал это. Я никогда не использовал класс Installer раньше. Я мог бы сделать что-то очень новобранец здесь. Согласно вашим инструкциям, я добавил код, который вставил ниже в исполняемый файл, который я хочу запустить во время установки. Я добавил exe-файл в папку приложения, а затем добавил его в пользовательское действие Commit. Теперь вот код, который я сейчас имею в исходном коде моего exe-файла, который я пытаюсь запустить:
</p>
<pre>
_
Public Class ApplicationInstaller
Inherits Installer
Public Overloads Overrides Sub Commit(ByVal savedState As IDictionary)
' Do some work on commit
The_Sub_I_Have_my_codein()
MyBase.Commit(savedState)
End Sub
Public Overloads Overrides Sub Install(ByVal stateSaver As IDictionary)
' Do some work on install
End Sub
Public Overloads Overrides Sub Uninstall(ByVal savedState As IDictionary)
' Do some work on uninstall
End Sub
End Class
Хммм ... В свойствах проекта exe я нажал "Подписать сборку", и ошибка исчезла. Тем не менее, похоже, что исполняемый файл не запускает код, который я хочу.