在Visual Studio 2017中为WPF应用程序创建MSI安装程序后,EXE不执行任何操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Visual Studio 2017中为WPF应用程序创建MSI安装程序后,EXE不执行任何操作相关的知识,希望对你有一定的参考价值。
我已经在Visual Studio中使用了安装项目的控制台应用程序没有问题,但是,直到现在,我总是运行我在Visual Studio中创建的任何WPF应用程序。这是我第一次尝试发布一个。如果我只知道如何处理子文件夹,我觉得这很简单。我有许多用于按钮的图像,用于徽标的PNG和两个PowerShell脚本。
我是否需要选择的不仅仅是主输出?
以下是数据的用法以供参考:
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:
- 以交互方式运行项目(
Debug => Start Debugging
)。 - 去
Debug => Windows => Modules
。 - 您应该看到为应用程序运行而加载的所有内容的列表。
坦率地说,我不确定这是否为您提供了所有类型的依赖关系。在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-sets和WinSxS 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 颜色主题