[英]How to generate msi/exe installer file in visual studio 2017 for a project of over 24 GB files?
[英]After creating MSI Installer for WPF app in Visual Studio 2017, EXE does nothing
我在Visual Studio中為控制台應用程序使用了安裝項目沒有問題,但是,直到現在,我一直在運行在Visual Studio中創建的所有WPF應用程序。 這是我第一次發布。 如果我只知道如何處理子文件夾,這將非常簡單。 我有許多用於按鈕的圖像,一個用於徽標的PNG和兩個PowerShell腳本。
我需要選擇的不僅僅是主要輸出嗎?
以下是數據的用途,以供參考:
PowerShell腳本(僅顯示相關代碼):
private static string checkAppsScript = File.ReadAllText(@"scripts\checkApps.ps1");
private static string removeAllScript = File.ReadAllText(@"scripts\removeall.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="data\weather_icon80x80.jpg"></Image>
</Border>
</Button>
<Label Content="Bing Weather" FontSize="14" FontWeight="SemiBold" Padding="0" HorizontalAlignment="Center"></Label>
</StackPanel>
我設法找到的所有教程都顯示了簡單的控制台應用程序或簡單的WPF應用程序,而沒有其他文件夾。 創建我的.msi文件后,可執行文件不執行任何操作。 它顯示了一個忙碌的動畫大約一秒鍾並退出。
我在這里做錯了什么? 為什么我的應用程序只能在Visual Studio中運行?
注意:data and Resources文件夾中的所有內容均設置為“ Build Action”的內容,而PS腳本則設置為Embedded Resource。 我不知道這是否正確。 目標平台設置為x64。
我對這個主題不太熟悉,但是這里有一些建議:
使用Visual Studio :
Debug => Start Debugging
)。 Debug => Windows => Modules
。 坦率地說,我不確定這是否給您所有類型的依賴關系。 如Dependency Walker幫助文件中此處所述,可以有許多不同的類型。
Dependency Walker是一個舊的Windows SDK工具。 到目前為止,它已經過時了-我認為上次更新已超過10年。
確保在Visual Studio中部署為解決方案加載的文件(我想應該運行發布版本)-和/或標識正確的運行時以部署運行時組件。
就個人而言,我將安裝您現有的MSI文件,然后一次在發布位置的磁盤上一次放置一個文件,直到您的應用程序啟動並運行。 然后,您將繼續測試應用程序功能,以識別任何其他依賴項。 訪問所有對話框並使用所有功能。
Dependencies.exe :
也許您也可以嘗試對Dependency Walker (上面提到的舊SDK工具)進行這種新的開放源代碼重寫,該重寫部分通過C#完成:“ Dependencies.exe ”。 該工具尚未完成,並且沒有Dependency Walker的所有功能(我看不到exe文件的任何分析功能),但是它支持API集和WinSxS依賴關系 -或並行 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文件夾中(我有兩個文件夾,這毫無意義)。 可執行文件現在可以工作了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.