0

我正在使用 InstallShield 创建一个运行 .cmd 文件的 MSI,该文件调用一个 powershell 脚本。powershell 脚本更改了 2 个注册表项。一个是删除 SYSTEM 注册表项上的 DENY 权限,另一个是将键的值从 0 更改为 1。

该脚本在手动执行或仅运行 .MSI 中使用的 .cmd 文件时运行良好。

但是,当我运行 .msi 时,cmd 文件会运行...... powershell 脚本执行并且值从 0 更改为 1......但是,拒绝不会被删除。msi 正在运行一个可执行的自定义操作,我将其命名为 RunCMD,它设置为在“系统上下文中的延迟执行”中运行,并设置为在 PublishFeatures 之后运行。

我不知道为什么以这种方式运行 .cmd (应该提升)没有执行 powershell 脚本的一部分,它改变了注册表项的权限,但它确实允许另一个键的值更改。该脚本肯定会运行,但在 .msi 中运行时会部分失败。

同样,如果我自己手动运行 .cmd 文件,脚本将毫无问题地运行,因此脚本本身没有问题。

4

0 回答 0