Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行Wix WPF引导程序时出现空白屏幕_Wpf_Xaml_Wix_Bootstrapper - Fatal编程技术网

运行Wix WPF引导程序时出现空白屏幕

运行Wix WPF引导程序时出现空白屏幕,wpf,xaml,wix,bootstrapper,Wpf,Xaml,Wix,Bootstrapper,我有一个用WPF编写的Wix管理的引导程序应用程序 在做了某些更改之后,引导程序不再工作:当我在没有引导程序的情况下运行WPF项目时,它运行良好(UI至少显示)。但是,当我运行引导程序时,它会打开一个空的(黑色背景)窗口,它就在那里,什么也不做 突破性的更改似乎正在将主视图MainView.xaml移动到视图子文件夹中。当然,即使进行了此更改,WPF项目本身仍然运行良好,但正如前面提到的,只是引导程序被破坏了 我做了一些搜索,我能找到的最接近的信息是这里的建议包括: 1) 使用pack://ap

我有一个用WPF编写的Wix管理的引导程序应用程序

在做了某些更改之后,引导程序不再工作:当我在没有引导程序的情况下运行WPF项目时,它运行良好(UI至少显示)。但是,当我运行引导程序时,它会打开一个空的(黑色背景)窗口,它就在那里,什么也不做

突破性的更改似乎正在将主视图
MainView.xaml
移动到
视图
子文件夹中。
当然,即使进行了此更改,WPF项目本身仍然运行良好,但正如前面提到的,只是引导程序被破坏了

我做了一些搜索,我能找到的最接近的信息是这里的建议包括:

1) 使用
pack://application:,,,
即所有资源的绝对路径:我尝试了这个方法,但没有解决我的问题

2) 添加额外的文件作为有效负载元素:这似乎只适用于非嵌入式资源,所以它不适用于我

3) 添加
Application.ResourceAssembly=typeof(主窗口).Assembly对引导程序:我不知道这是做什么的,也不知道在哪里添加它,所以我没有尝试过

如何解决此问题

其他信息:重大更改:我将my
MainView
XAML文件从WPF应用程序的根目录移动到名为
View
的子文件夹中。我将几个
ResourceDictionary
XAML文件从
/View/
移动到
/View/dictionary/
。我使用绝对路径访问这些移动的XAML文件,例如:

<ResourceDictionary Source="WindowStyle.xaml" />

这个解决方案与我问题中的建议正好相反。换句话说,我必须在XAML中的任何地方使用相对路径,而不是绝对路径。Wix B必须移动对象,因此绝对路径不起作用,而相对路径起作用,因为所有移动的对象都将一起移动,并且仍然处于相同的相对位置。

(ManagedBootTrapperApplicationHost是承载.NET和WPF程序集的非托管应用程序)

您应该尽快调用它,即在
BootstrapperApplication
的无参数构造函数中,其中
MainWindow
是包含嵌入资源的DLL中的一种类型。这允许您使用
pack://application:,,,
样式引用

public class MyBA : BootstrapperApplication
{
    public MyBA()
    {
        if (Application.ResourceAssembly == null)
        {
            Application.ResourceAssembly = typeof(MainWindow).Assembly;
        }
    }
}

肯定还有更多。肖恩·霍尔(Sean Hall)是一位从事burn开发的WiX开发者。我必须同意,这里没有足够的细节来帮助其他人。你在干什么?我有一些图片资源。。但正如我在问题中提到的,问题不仅仅是图像,甚至是XAML在运行时没有正确定位。你说不够详细是什么意思?它是一个使用WPF的Wix管理的引导程序。您还需要什么其他细节?默认情况下,XAML总是编译的,您必须让代码在运行时显式地读取XAML文件才能做到这一点。您提到您已经嵌入了图像,但没有解释如何嵌入它们(有多种方法可以做到这一点)。您没有提到如何使用嵌入式资源(XAML、代码隐藏或其他)。在移动文件以使其正常工作后,您必须更改了XAML或代码中的某些内容,您至少可以在更改前后给出行。根据您的要求添加更多信息。这难道不是使用WPF进行Wix BAs的人的常见问题吗?如果我有机会,如果你愿意看的话,我可能会准备一个小的VS解决方案来演示这个问题。+1谢谢,这现在是有意义的。我认为这是一个可能的替代解决方案,但不一定更可取(在我的情况下,相对路径工作得很好,并且比绝对路径少键入,而且我不必担心设置ResourceAssembly)。
<Image Source="/Resources/logo.png" VerticalAlignment="Center" Width="75" Height="25" />
public class MyBA : BootstrapperApplication
{
    public MyBA()
    {
        if (Application.ResourceAssembly == null)
        {
            Application.ResourceAssembly = typeof(MainWindow).Assembly;
        }
    }
}