使用PowerShell禁用Installshield的“下一步”按钮

时间:2018-01-03 09:16:04

标签: powershell installshield

我有一个使用PowerShell自定义操作的Installshield项目。 在我的一个对话框中,我要求用户输入用户名和密码,然后我验证凭据(使用powershell),我只想在凭据正确的情况下启用Next按钮。

这可以通过powershell动作项来实现吗?我使用PowerShell的原因是我根本不了解InstallScript。

到目前为止,这是我的powershell脚本:

    Function Test-UserCredential { 
    Param($username, $password) 
    Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
    $ct = [System.DirectoryServices.AccountManagement.ContextType]::Machine, $env:computername 
    $opt = [System.DirectoryServices.AccountManagement.ContextOptions]::SimpleBind 
    $pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ct 
    $Result = $pc.ValidateCredentials($username, $password).ToString() 
    $Result 
} 

$comp_username = Get-Property -Name COMPUTER_USERNAME

$comp_password = Get-Property -Name COMPUTER_PASSWORD

$result = Test-UserCredential -username $comp_username -password $comp_password

if ($result)
{
#Enable "Next" button
}

else
{
#Disable "Next" button
}

感谢。

1 个答案:

答案 0 :(得分:2)

您需要做三件事。

  1. 选择一个跟踪是否应启用“下一步”按钮的属性,并从PowerShell中设置该属性。通常,您将在下一步中将其设置为“1”或“”(空字符串)。
  2. 在对话框编辑器中创建控制条件,启用和禁用引用属性作为条件的“下一步”按钮。
  3. 在powershell操作完成后单独触发UI进行更新。不幸的是,UI在所有属性更改后都没有评估控制条件;只有在更改它认为相关的属性后才能这样做。因此,最简单的方法是添加一个设置属性的Set Property控件事件。
  4. 请注意,为了清楚步骤3的相关性,将其拆分为两个单独的属性会很有用;在powershell中设置一个,在Set Property控件事件中将其反映到另一个中,并具有读取后者的控制条件。