繁体   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