0

InstallShield を使用して、powershell スクリプトを呼び出す .cmd ファイルを実行する MSI を作成しています。PowerShell スクリプトは 2 つのレジストリ キーを変更します。1 つは SYSTEM のレジストリ キーに対する DENY 権限を削除し、もう 1 つはキーの値を 0 から 1 に変更しています。

手動で実行した場合、または .MSI 内で使用される .cmd ファイルを単に実行した場合、スクリプトは正常に実行されます。

ただし、.msi を実行すると、cmd ファイルが実行されます... powershell スクリプトが実行され、値が 0 から 1 に変更されます...ただし、DENY は削除されません。msi は、RunCMD という名前の実行可能なカスタム アクションを実行しています。これは、「システム コンテキストでの遅延実行」で実行するように設定され、PublishFeatures の後に実行するように設定されています。

この方法で.cmdを実行すると(昇格する必要があります)、レジストリキーのアクセス許可を変更するpowershellスクリプトの一部が実行されないが、他のキーの値の変更が許可される理由について、私は途方に暮れています。スクリプトは確実に実行されますが、.msi 内で実行すると部分的に失敗します。

繰り返しますが、自分で .cmd ファイルを手動で実行すると、スクリプトは問題なく実行されるため、スクリプト自体には問題はありません。

4

0 に答える 0