论坛风格切换切换到宽版
  • 7628阅读
  • 12回复

inno setup如何判断系统是否装了VC++2012以及一些相类似的程序 [复制链接]

上一主题 下一主题
离线王毛毛
 

发帖
4
金钱
40
威望
4
只看楼主 倒序阅读 0 发表于: 2015-09-07
inno setup如何判断系统是否装了VC++2012以及一些相类似的程序,就是根据注册表来判断但要在32位和64位注册表是不一样的,有没有方便的方法
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 1 发表于: 2015-09-07
用户被禁言,该主题自动屏蔽!
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 2 发表于: 2015-09-07
用户被禁言,该主题自动屏蔽!
离线王毛毛

发帖
4
金钱
40
威望
4
只看该作者 3 发表于: 2015-09-07
回 2楼(546242502) 的帖子
546242502:实在不一样,笨方法,32位和64位都来一次检测不就行了[表情]  (2015-09-07 16:31) 

我就是不知道该怎么判断是32位还是64位
离线王毛毛

发帖
4
金钱
40
威望
4
只看该作者 4 发表于: 2015-09-07
回 3楼(王毛毛) 的帖子
王毛毛:我就是不知道该怎么判断是32位还是64位 (2015-09-07 17:11) 

HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\这是32位的地址

HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\这是64位地址
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 5 发表于: 2015-09-07
用户被禁言,该主题自动屏蔽!
离线王毛毛

发帖
4
金钱
40
威望
4
只看该作者 6 发表于: 2015-09-08
回 5楼(546242502) 的帖子
546242502:这就是我说的第一种情况。64 位系统下 32位安装模式会自动转到32位注册表视图下,不用区分!HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ 就行。....... (2015-09-07 19:10) 

写了一段 测试时一直在安装文件 找不出哪里有错 麻烦看一下
function IsDsfMissing(): Boolean;
var
version: Cardinal;
begin
if(not Iswin64) then
  begin
    Result := not RegQueryDWordValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{a55ac379-46b0-461a-95b1-fef5c08443f2}', 'Version', version);
  end;
if(Iswin64) then
  begin
    Result := not RegQueryDWordValue(HKLM, 'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{a55ac379-46b0-461a-95b1-fef5c08443f2}', 'Version', version);
  end;
end;
                                                    
function InitializeSetup(): Boolean;
begin
if IsDsfMissing() then
   begin    
     ExtractTemporaryFile('vcredistx86.exe');
   end;
   Result := true;
end;
离线546242502

发帖
332
金钱
-3060
威望
-306
只看该作者 7 发表于: 2015-09-08
用户被禁言,该主题自动屏蔽!
离线solan

发帖
77
金钱
770
威望
77
只看该作者 8 发表于: 2015-10-31
如果要批量判断和安装vc运行库2005、2008、2010、2012、2013和2015等等那要怎么办?
离线solan

发帖
77
金钱
770
威望
77
只看该作者 9 发表于: 2015-10-31
如果按照上面说的代码写,那要写多少啊