2011-11-04 128 views
1

在Windows上使用Visual Studio 2010在Windows 7 32位計算機上安裝和運行Windows Forms應用程序時,構建安裝程序安裝程序的正確方法是什麼7 64位機器?在Windows 7 64位計算機上爲Windows 7 32位平臺構建C#

我剛剛刷去灰塵,一個3年期的老Visual Studio 2008中的應用,建立在Windows XP中,使用了SQL Express 2005

我已經更新,以VS2010,SQL Express的2008年,並重建它一臺Windows 7 64位機器。它需要在Windows 7 32位平臺上運行。

運行時,數據庫的安裝項目會保持失敗(啓動時),並說它僅適用於x64機器。 (該應用程序的設置運行正常並安裝。)

我已經通過解決方案中的每個項目,並將其設置爲使用x86構建(而不是任何CPU)。我已刪除所有PreRequisites。唯一懷疑留在那裏的是一個DB CustomAction項目(它運行數據庫腳本)。

從谷歌搜索看來,我在64位機器上搭建'任何CPU',意味着它應該產生安裝文件,通過WOW在32位機器上運行?而不必做出我所做的所有改變?我錯過了什麼明顯的東西?

謝謝。

回答

1

試試這個:

  • 在解決方案資源管理器中選擇安裝項目
  • 打開屬性窗格
  • 確保上投放設置爲
1

我總是感到沮喪的是,我遇到了同樣問題的帖子,從來沒有發佈過解決方案。所以我會張貼我發現的情況,甚至有些情況下,有一天它對其他人有用。我發現很多其他開發者報告無目標的Windows 7程序「已停止工作」消息。

順便說一句,我找到了測試部署應用程序的最簡單方法,安裝程序是建立一個虛擬PC機,它的配置與平臺最終運行時相同。然後複製該虛擬PC,並在副本上運行測試。這樣,我可以隨時刪除副本,快速重新複製並重新開始。

是的,正如Cosmin所說,解決方案的TargetPlatform屬性也需要設置爲x86。無論如何,沒有解決這個問題,該應用程序仍然產生'已停止工作'的信息。

接下來我檢查了SQL日誌ERRORLOG文件(c:\ Program Files \ Microsoft SQL Server \ MSSQL10.SQLExpress \ MSSQL \ Log),它報告應用程序試圖使用混合模式身份驗證進行登錄,而設置了SQL用於Windows身份驗證。現在我知道我在安裝SQL Express時選擇了混合模式,因爲我的應用使用了一個SQL服務帳戶,我的數據庫安裝程序爲其創建帳戶。所以不知何故,這是由什麼改變(不知道什麼?)。要通過SQL Server Management Studio設置爲混合模式,只需右鍵單擊該實例,選擇安全性並更改服務器身份驗證。如果沒有Management Studio,您需要編輯註冊表HKEY_LOCAL_MACHINE/Software/Microsoft/Microsoft SQL Server // MSSQLServer,並編輯關鍵的LoginMode = 2以獲取混合。再一次,沒有解決問題,該應用程序仍然產生'已停止工作'的信息。

接下來,偶然我偶然發現有關此消息的一些帖子可能會在啓動過程中通過在Windows 7上加載32位應用程序而引起。我在第一行放置了MessageBoxes和Try/Catchs,而且他們從未顯示過,並沒有發現錯誤。

我試過的下一件事是在我的exe文件上運行DependencyWalker。它報告2 x 32位文件丟失:IEShims.dll和GPSVC.dll。有來自其他開發者遇到此問題的帖子,最終結果是我在C:\ Windows \ winsxs中找到它們(GPSVC.dll被稱爲x86_microsoft-windows-g..licy-base.resources_31bf3856ad364e35_6.1.7600.16385_en-us_c10af1bed239c523_gpsvc.dll .mui_0c160ac2)。我將它們放到C:\ Windows \ System32中,重新編譯我的應用程序,將其部署到我的測試機器,然後它終於運行!

仍然不明白爲什麼只是把它們放到我的開發箱上的System32目錄使應用程序在測試機上運行?但無論如何,它解決了這個問題,並希望這對其他人有所幫助。