visual studio - 應將哪個winform項目文件打包到安裝程序中




visual-studio winforms (2)

我想通過 Inno Setup 打包我的winform項目。 但是除了主要的可執行文件之外,它還必須指定其他所需的文件,並且項目文件夾中有許多文件。

那麼需要哪些文件? .cs腳本重要嗎? 或者只是/ bin / release /中的文件?


運行應用程序所需的所有文件都可以在 /bin/release 文件夾中找到,包括DLL和可執行文件本身。

但是,這確實假設您使用Visual Studio中的內置工具將這些庫添加到項目中

編輯(感謝Lex Li):如果您尚未安裝運行時文件(這些文件通常與.NET一起安裝),則需要從 https://www.microsoft.com/net 安裝它們


總的來說 :我喜歡 Tom Blodget的建議 來查找依賴關係和運行時。 以下是一些詳細的技術選項,用於確定問題應用程序的運行情況。 匆忙組裝。

清潔虛擬 :顯然需要 Lex Li的建議 (上面評論你的問題)在一個乾淨的虛擬機上手動設置你的應用程序以進行 質量檢查 測試, 並以“迭代的方式”確定 部署要求

檢查清單 :僅供記錄: 應用程序啟動問題的通用檢查列表 (由於某種原因有人投票,讓我知道你在那裡發現了什麼錯誤?我是部署專家而不是編碼器 - 它更像是一個“想法”列表,而不是一個真正的清單)。

更新 - 2018 9月

調試二進製文件 - 啟動序列調試 :您可以在應用程序啟動序列的早期插入一個消息框,並將調試二進製文件整合到您的設置中,安裝它,然後在啟動時將調試器附加到應用程序的消息框以便逐步啟動碼? (設置一個斷點)。 現在你可以調試了,只要你的EXE開始了

  • 也許請查看這個 “附加調試器方法”的 好的 高級安裝程序視頻教程 。 它顯示了自定義操作代碼的相同方法。 啟動應用程序的過程相同。 只需附加到消息框並設置斷點即可。

  • 注意 :顯然記得一旦你知道問題是什麼就重新編譯發布二進製文件 - 並重新發布。 調試二進製文件不可再發行 - 它們綁定到僅由MS SDK安裝的調試dll。 普通PC不會(通常)擁有這些調試dll。

Visual Studio模塊視圖 :我已經看到它建議在 Visual Studio中 以調試模式運行。 以交互方式運行項目: Debug => Start Debugging ,然後執行: Debug => Windows => Modules ,以獲取為應用程序運行所加載的內容的列表。 坦率地說,我不確定這是否為您提供了所有類型的依賴關係。 可以有許多不同的類型,如 Dependency Walker幫助文件中所述 。 我試圖 在這個問題上挑選漢斯帕斯特的大腦:-) ,但它可能太詳細了。

Dependency Walker :這是一個舊的Windows SDK工具。 它現在已經過時了 - 我認為自上次更新以來已經過去了10年。 這是舊的戰馬依賴,但對新的二進製文件不起作用。 它不支持 WinSxS依賴項(並排win32程序集) API-Sets

  • 我仍然用它來提醒自己“ 模塊搜索順序 ”。 打開工具: Options => Configure Module Search Order... Windows按照這樣的搜索順序定位文件/模塊 - 以及不同OS版本之間的差異。
  • 它肯定是過時的,但它至少提醒你如何在Windows中掃描文件夾 - 每個Windows版本都不同 - 尤其是清單。

dumpbin :Windows SDK中的另一個老工具(在安裝了Visual Studio的系統上搜索 %ProgramFiles(x86)% )。 這是一個命令行工具。 對於受虐狂:-)。 老實說,我不知道它是否具有對最新二進製文件的適當支持,但它似乎得到維護(與Dependency Walker不同)。

ProcMon (Sysinternals):這是人們在解決硬依賴問題時發誓的工具。 快速模擬樣本 。 真正的交易 - 任何真正發生在幕後的小望遠鏡。 我並不擅長使用它,但是看一下輸出的想法總是很有啟發性。 缺少COM服務器註冊等...

ProcessExplorer (Sysinternals): 請檢查這個答案 。

Fuslogvw.exe Fuslogvw.exe 告訴你什麼嗎? (.NET程序集綁定失敗)。

Dependencies.exe :也許你也可以嘗試這個新的,開源重寫的 Dependency Walker (上面提到的那個舊的SDK工具)部分在C#中完成:“ Dependencies.exe ”。 這個工具還沒有完成,並沒有Dependency Walker的所有功能(我看不到exe文件的任何分析功能),但它支持 API-Sets WinSxS依賴項 - 或併排的Win32程序集(這是Dependency Walker遺漏的。 我沒有足夠的測試它真的推薦它 - 但它是開源的,因此可以檢查。 I have contacted the author about an issue where the bundled peview.exe is identified as malware 作者很快回來解釋 。 建議您在開始使用該應用程序之前刪除peview.exe。

NDepend wikipedia ):恐怕我不使用的工具,但 請檢查這個答案 (做檢查)。

部署工具 :除Inno設置之外的 各種部署工具 ( 列表視圖,僅限核心工具 )。

一些鏈接

。淨





inno-setup