簡體   English   中英

在64位系統上檢測程序的32位安裝

[英]Detect 32-bit install of program on a 64-bit system

VB.NET Winforms程序,.NET 4.0,使用VS2013編譯。 100%托管代碼; 沒有依賴於特定處理器體系結構的DLL。

我有兩個Visual Studio Installer項目,一個用於x86,另一個用於x64。

該程序“打電話回家”以查找新程序; 現在,我將檢測處理器體系結構,以確定是否存在新程序來下載32位或64位安裝程序。

檢測代碼:

    dim sArchitecture as String = ""
    If Environment.Is64BitProcess Then
        sArchitecture = "x64"
    Else
        sArchitecture = "x86"
    End If

問題場景:

客戶擁有64位計算機,但下載了32位安裝程序,該程序當然可以正常運行。 實際上,我們建議不了解其處理器架構的客戶下載32位安裝程序。

32位安裝程序將電話返回並發送在程序中檢測到的x64處理器體系結構。 下載帶來了64位安裝程序,該程序將程序的第二個副本安裝到客戶的計算機中,從而造成混亂。

我需要弄清楚的是,如果我使用Visual Studio安裝程序項目並將TargetPlatform設置為x86,是否有一些可靠的方法可以檢測到這一點? 檢查安裝文件夾是否包含“ Program Files(x86)”是不夠的; 客戶可能已將程序安裝到另一個位置。

我將非常感謝您的幫助!

謝謝約翰。

切換到Release版本,然后右鍵單擊EXE項目> Properties> Build選項卡。 您已將“平台”目標設置為“ AnyCPU”,並且“首選32位”復選框已關閉。

是的,.NET程序可以自動在32位和64位模式下運行非常方便。 您不需要分別為32位和64位版本構建。 除了您的“檢測代碼”不再可靠運行之外,32位安裝程序仍會部署以64位模式運行的程序。 如果不使用面包屑,發現使用哪種安裝程序的唯一方法是從安裝目錄對其進行反向工程。 是的,不是很可靠。 否則,將面包屑留在注冊表中非常容易,安裝程序擅長編寫注冊表項。

但是,只是簡化您的生活,您根本不需要64位特定的安裝程序。 一個人完成工作。 它存儲在“錯誤”目錄中沒關系,您已經知道它可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM