在Visual Studio 2017中为WPF应用程序创建MSI安装程序后,EXE不执行任何操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Visual Studio 2017中为WPF应用程序创建MSI安装程序后,EXE不执行任何操作相关的知识,希望对你有一定的参考价值。

我已经在Visual Studio中使用了安装项目的控制台应用程序没有问题,但是,直到现在,我总是运行我在Visual Studio中创建的任何WPF应用程序。这是我第一次尝试发布一个。如果我只知道如何处理子文件夹,我觉得这很简单。我有许多用于按钮的图像,用于徽标的PNG和两个PowerShell脚本。

images

other resources

我是否需要选择的不仅仅是主输出?

setup wizard

以下是数据的用法以供参考:

PowerShell脚本(只显示相关代码):

 private static string checkAppsScript = File.ReadAllText(@"scriptscheckApps.ps1");
 private static string removeAllScript = File.ReadAllText(@"scripts
emoveall.ps1");

 PowerShell removePS = PowerShell.Create();
 removePS.AddScript(removeAllScript);

 PowerShell ps = PowerShell.Create();
 ps.AddScript(checkAppsScript);

来自我的XAML的数据文件夹中的图像(有18.只显示1):

<StackPanel Grid.Row="0" Grid.Column="0">
    <Button Name="bingweatherBtn" Margin="10" Style="{StaticResource ImageButtonStyle}" Click="ImageBtn_Click">
        <Button.BitmapEffect>
            <DropShadowBitmapEffect Color="Black" Direction="320" Opacity="0.8"/>
        </Button.BitmapEffect>
            <Border BorderBrush="Black" BorderThickness="2">
                <Image Source="dataweather_icon80x80.jpg"></Image>
            </Border>
        </Button>
        <Label Content="Bing Weather" FontSize="14" FontWeight="SemiBold" Padding="0" HorizontalAlignment="Center"></Label>
</StackPanel>

我设法找到的所有教程都显示简单的控制台应用程序或简单的WPF应用程序,没有其他文件夹。创建我的.msi文件后,可执行文件什么都不做。它显示一个繁忙的动画大约一秒钟然后退出。

我在这做错了什么?为什么我的应用只能在Visual Studio中运行?

注意:数据和资源文件夹中的所有内容都设置为“构建操作”的内容,PS脚本设置为嵌入式资源。我不知道这是否正确。目标平台设置为x64。

答案

我不太熟悉这个话题,但是这里有一些建议:

使用Visual Studio:

  1. 以交互方式运行项目(Debug => Start Debugging)。
  2. Debug => Windows => Modules
  3. 您应该看到为应用程序运行而加载的所有内容的列表。

坦率地说,我不确定这是否为您提供了所有类型的依赖关系。在the Dependency Walker help file中可以有许多不同的类型。

Dependency Walker是一个旧的Windows SDK工具。它现在已经过时了 - 我认为自上次更新以来已经过去了10年。

确保在Visual Studio中部署为解决方案加载的文件(我想您应该运行发布版本) - 和/或确定部署运行时组件的正确运行时。

就个人而言,我会安装您现有的MSI文件,然后在发布位置的磁盘上一次放置一个文件,直到您的应用程序启动并运行。然后,您继续测试应用程序功能以识别任何进一步的依赖项。访问所有对话框并使用所有功能。


Dependencies.exe:

也许你也可以试试这个新的,开源重写的Dependency Walker(上面提到的旧SDK工具)部分用C#编写:“Dependencies.exe”。这个工具还没有完成,并没有来自Dependency Walker的所有功能(我看不到exe文件的任何分析功能),但它支持API-setsWinSxS dependencies - 或并排的Win32程序集(缺少来自Dependency Walker)。我没有足够的测试它真的推荐它 - 但它是开源的,因此可以检查。看来你需要自己从源头构建它(现在)。

另一答案

我删除了脚本并将它们硬编码到MainWindow.xaml.cs文件中,如下所示:

private static string checkAppsScript = @"$appList = @('*BingNews*','*BingWeather*','*OneNote*','*WindowsAlarms*', 
                                                           '*Recorder*', '*Maps*','*Camera*', '*Microsoft.People*',
                                                           '*xboxapp*', 'ZuneMusic*','*Messaging*', '*Builder*', 
                                                           '*BubbleWitch*', '*Minecraft*', '*Spotify*',
                                                           '*Empires*', '*StickyNotes*', '*Skype*', '*SolitaireCollection*')


                                            ForEach($app in $appList)
                                            {
                                              Get-AppxPackage | Select Name | Where-Object {$_.Name -like $app}
                                            }";

我删除了图像并使用“添加现有项目”重新添加它们。我最初使用的是“添加项目”。我将所有图像放在一个res文件夹中(我有两个文件夹,这是没有意义的)。可执行文件现在有效。

以上是关于在Visual Studio 2017中为WPF应用程序创建MSI安装程序后,EXE不执行任何操作的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2017 中为 Windows XP 编译代码

如何在 Visual Studio 2017 中为 Linux 应用启用多线程

如何使用 C++ 非托管库在 Visual Studio 2017 中为 Xamarin.Forms 设置项目?

如何在 Visual Studio Code 中为 React Native 设置调试?

在 html 中为 Visual Studio 中的 Angular 静态键入

Visual Studio 2017 中用于 JavaScript 和 TypeScript 文件的 Visual Studio Code 颜色主题