Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 针对x86和x64体系结构注册.msi(安装项目)_C#_Visual Studio_Setup Project_Regedit - Fatal编程技术网

C# 针对x86和x64体系结构注册.msi(安装项目)

C# 针对x86和x64体系结构注册.msi(安装项目),c#,visual-studio,setup-project,regedit,C#,Visual Studio,Setup Project,Regedit,我正在为生物特征捕获应用程序构建一个安装项目 问题是,为了让它在用户的PC上工作,我需要在Regedit中注册.exe路径 正如您在下面所看到的,我已经通过定位“Program Files(x86)”文件夹实现了这一点,但在32位PC中它并不存在,因此,应用程序无法启动 如何使其同时适用于32位和64位体系结构?MSI安装不需要注册可执行文件 它只能将相关信息放入Windows注册表中 默认情况下,MSI安装程序将把所有文件放在单个根文件夹中(例如,MS Office将放在“C:\Progra

我正在为生物特征捕获应用程序构建一个安装项目

问题是,为了让它在用户的PC上工作,我需要在Regedit中注册.exe路径

正如您在下面所看到的,我已经通过定位“Program Files(x86)”文件夹实现了这一点,但在32位PC中它并不存在,因此,应用程序无法启动


如何使其同时适用于32位和64位体系结构?

MSI安装不需要注册可执行文件

它只能将相关信息放入Windows注册表中

默认情况下,MSI安装程序将把所有文件放在单个根文件夹中(例如,MS Office将放在“C:\Program files\Office”或类似的位置)。要配置目标安装文件夹,请使用

TARGETDIR属性是在安装过程中计算的(此外,用户可以覆盖它)。默认属性“[ProgramFilesFolder]”是x86位置,但它无处不在。属性“[ProgramFiles64Folder]”是您需要的,但它仅存在于x64操作系统上

那么,您需要什么:

  • 查找将修补TARGETDIR的操作/步骤
  • 在“ProgramFiles64Folder”(如果存在)之前添加操作/步骤以使用它
可能的话,我可以帮你举一些例子


完成上述步骤后,应用程序将为x86/x64操作系统选择普通程序文件文件夹。

MSI安装不需要注册可执行文件

它只能将相关信息放入Windows注册表中

默认情况下,MSI安装程序将把所有文件放在单个根文件夹中(例如,MS Office将放在“C:\Program files\Office”或类似的位置)。要配置目标安装文件夹,请使用

TARGETDIR属性是在安装过程中计算的(此外,用户可以覆盖它)。默认属性“[ProgramFilesFolder]”是x86位置,但它无处不在。属性“[ProgramFiles64Folder]”是您需要的,但它仅存在于x64操作系统上

那么,您需要什么:

  • 查找将修补TARGETDIR的操作/步骤
  • 在“ProgramFiles64Folder”(如果存在)之前添加操作/步骤以使用它
可能的话,我可以帮你举一些例子

完成上述步骤后,应用程序将为x86/x64操作系统选择普通程序文件文件夹。

以下几点:

  • 单独的体系结构需要单独的MSI:
  • 因此,如果您确实需要两个不同的版本,一个包含64位代码,另一个包含32位代码,那么您需要使用Visual Studio安装项目设置进行单独的MSI版本。32位的one主文件夹将是应用程序文件夹目录属性中的ProgramFilesFolder,64位的one主文件夹将使用ProgramFiles64Folder

  • 在这两种情况下,您需要的注册表项都是[TARGETDIR]Your.exe,这将正常工作,因为在这两种情况下,TARGETDIR是文件夹的名称,而您的可执行文件不在子文件夹中 有几件事:

  • 单独的体系结构需要单独的MSI:
  • 因此,如果您确实需要两个不同的版本,一个包含64位代码,另一个包含32位代码,那么您需要使用Visual Studio安装项目设置进行单独的MSI版本。32位的one主文件夹将是应用程序文件夹目录属性中的ProgramFilesFolder,64位的one主文件夹将使用ProgramFiles64Folder

  • 在这两种情况下,您需要的注册表项都是[TARGETDIR]Your.exe,这将正常工作,因为在这两种情况下,TARGETDIR是文件夹的名称,而您的可执行文件不在子文件夹中
    改用%ProgramFiles%。@HansPassant仍然假设安装在那里,使用MSI安装目录更好。改用%ProgramFiles%。@HansPassant仍然假设安装在那里,使用MSI安装目录更好。我有点困惑。您是否建议使用
    ProgramFiles64文件夹
    在64位Windows
    程序文件
    中放置32位二进制文件,而不是
    程序文件(x86)
    ?虽然它在技术上可以工作,但这在很大程度上违背了操作系统的惯例。此外,我确信MSI可以设置其他注册表项,尽管我不太熟悉这样做。所以我不需要将它的注册表添加到包中?既然你说它应该自动注册密钥,那么这个项目有什么问题吗?@doutriforce,msi不需要任何可执行文件注册。但是,您可以通过“开始”菜单进行访问,或者注册文件以进行COM访问。尽管如此,要获得正确的目录,只需使用“ProgramFiles64Folder”。@ManushinIgor,我需要注册它。我正在从一个网站使用此应用程序,如果我没有注册它,当我尝试捕获指纹时,应用程序将无法启动。我用过[TARGETDIR],效果很好。@doutriforce,好的,没问题。所以我们只需要配置TARGETDIR。正如我所说,大多数说明都是关于另一个问题的。我只是重新写了一个想法:我们必须在OSIm中选择TARGETDIR文件夹。您是否建议使用
    ProgramFiles64文件夹
    在64位Windows
    程序文件
    中放置32位二进制文件,而不是
    程序文件(x86)
    ?虽然它在技术上可以工作,但这在很大程度上违背了操作系统的惯例。此外,我确信MSI可以设置其他注册表项,尽管我不太熟悉这样做。所以我不需要将它的注册表添加到包中?既然你说它应该自动注册密钥,那么这个项目有什么问题吗?@doutriforce,msi不需要任何可执行文件注册。但是,您可以通过“开始”菜单进行访问,或者注册文件以进行COM访问。尽管如此