在安装程序之前对注册表进行更改

时间:2018-11-02 06:32:33

标签: c# registry installshield registrykey

好的,我使用InstallShield(软件)为程序创建了一个安装文件。直到按照此处 .NET 4 fails to install because SECUREREPAIR fails to CreateContentHash of file SetupResources.dll: for computing hash Error: 997 所述更改注册表后,我才能成功安装该程序。对注册表进行更改后,我可以安装我的程序。因此,要在运行我的安装程序文件之前进行注册表更改。创建安装程序文件时,是否不能在InstallShield的某个位置嵌入该 .reg 文件,以使 .reg 文件在我的实际安装开始之前运行?

3 个答案:

答案 0 :(得分:0)

您可以在脚本中创建自定义操作,以更新注册表并添加到序列中。下面是一个粗糙的示例(如果不进行一些调整,将无法正常工作)。

然后在UI序列中的ISInstallPrerquisites之前添加到序列中。

  

STRING svCmd;
  STRING svCmdPath;
  开始

     

“对于DWORD:

     

svCmd =“ reg add” +键名+“ / v” + ValueName +“ / t REG_DWORD / d” + dataValue +“ / f”;

     

“对于字符串:

     

svCmd =“ reg add” +键名+“ / v” + ValueName +“ / t REG_SZ / d” + dataValue +“ / f”;

     

svCmdPath =“ cmd”;

let re = /HaHa/g,
str = "Hello_HaHaHaHackerRank";
while ((match = re.exec(str)) != null) {
  console.log("match found at " + match.index);
}

答案 1 :(得分:0)

  
      
  • 此问题在所有计算机上还是仅在部分计算机上发生?什么操作系统?
  •   
  • 您的防病毒软件安全套件是什么?
  •   
  • 您是否处于锁定的企业国有企业? (标准操作环境)。      
        
    • 有自定义政策吗?
    •   
    • 您使用的是强制性(或临时)配置文件吗?
    •   
  •   

必备软件 :如果这是正式的 Microsoft .NET 4运行时安装程序,那么我将其排除在外自己的安装程序,并将其作为必备程序与我的主安装程序一起提供,或者我只是指向网页以下载该运行时的最新版本。我更喜欢后一种选择,因为随着新的安全修补程序可用,您随包提供的内容可能会很快过时。 关键 :大多数人现在可能已经安装了此运行时?

Windows Update :我什至可以告诉用户通过Windows Update安装,但这更多的是手动操作,需要更多步骤。 .NET 4现在不是必需的Windows Update安装吗?

企业用户 :企业打包人员将欣赏运行时与您自己的软件包的分离,因为花了很多时间从供应商软件包中取出必备软件包。他们只需要一些一页的文档,告诉他们需要什么运行时。 他们将根据自己的企业标准预先包装正确的产品-并调试了您提到的问题。不需要对抗运行时设置。

真实世界 :您可以将 *.reg 文件与您的 .NET 4安装程序一起交付 >带有简短 README.txt 的文件,其中描述了您提到的问题。然后他们可以根据需要进行处理,如果未发现问题,则可以避免大惊小怪。然后,在主设置中添加 LaunchCondition ,以防止其安装,除非安装了 .NET 4

答案 2 :(得分:0)

安装程序软件通常(总是?至少instalShield至少有一个)具有“注册表”功能,您可以在其中定义要添加的注册表层次结构/条目/值。

不需要任何脚本或reg文件。所有值都在链接安装之前进行设置。

无论如何,因为InstallShield已经为您解决了问题,所以不太可能会要求您找到解决方法。只需在安装程序中进行设置即可。