Я готовлю проект установки для своего приложения. Мне нужно создать строку подключения к базе данных, а затем запустить файл сценария на основе строки подключения и обновить также файлы конфигурации приложения.
У меня есть Пользовательский элемент управления WPF Sql Connection , который позволяет мне создавать строку подключения к базе данных из пользовательского ввода.
Проблема в том, что при попытке запустить пользовательский элемент управления WPF Sql из класса установщика я получаю это исключение.
Ошибка 1001: Assembly.GetEntryAssembly () возвращает значение NULL. Задайте свойство Application.ResourceAssembly или используйте синтаксис пакета, чтобы указать сборку, из которой будет загружаться ресурс.
вот код App.xaml.cs
Uri uri = new Uri(@"/WpfApplication1;component/MainWindow.xaml", UriKind.Relative);
var window = Application.LoadComponent(uri);
мой класс установщика имеет этот код для запуска приложения.
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
var thread = new System.Threading.Thread(StartDatabaseUserControl);
thread.SetApartmentState(System.Threading.ApartmentState.STA);
thread.Start();
thread.Join();
}
Спасибо
Реализованное решение
ну, у меня это работает по-другому.
Изменение свойства настраиваемого действия «Класс установщика» на false в проекте установки Visual Studio сработало для меня.
Мне пришлось добавить еще одну точку входа и установить ее в качестве объекта запуска проекта. даже не нужно добавлять какой-либо код в файл App.xaml.cs.
это новая точка входа
[STAThread]
private static void Main(string[] args)
{
TargetDirectory = args[0];
var app = new App();
app.InitializeComponent();
app.Run();
}