使用 powershell 禁用 Installshield 的下一步按钮

Disabling Installshield's Next button with powershell

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

这可以用powershell action item实现吗?我使用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. 选择一个 属性 来跟踪是否应启用“下一步”按钮,并从您的 PowerShell 中进行设置。通常您会将其设置为“1”或“”(空字符串)以方便下一步。
  2. 在对话框编辑器中创建控制条件,启用和禁用引用 属性 作为您的条件的下一步按钮。
  3. powershell动作完成后单独触发UI更新。不幸的是,UI 在所有 属性 更改后不评估控制条件;它仅在 it 更改它认为相关的 属性 之后才这样做。所以最简单的方法是添加一个 Set 属性 控件事件来设置 属性.

请注意,为了清楚地说明第 3 步的相关性,将其拆分为两个单独的属性可能会很有用;在 powershell 中设置一个,在 Set 属性 控制事件中将其反映到另一个中,并具有读取后者的控制条件。