Sample code for 30+ languages & platforms
Delphi ActiveX Requires Chilkat v11.7.0+

Remove the Authenticode Signature from an MSI, PowerShell, or VBScript File

See more Code Signing Examples

Demonstrates how to remove the Authenticode signature from a Windows Installer package (.msi), a PowerShell file (.ps1, .psm1, .psd1), or a VBScript file (.vbs). Removing the signature from these file types requires Chilkat v11.7.0 or later.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
var
success: Integer;
path: WideString;
codeSign: TChilkatCodeSign;
sigInfo: TChilkatJsonObject;
valid: Integer;

begin
success := 0;

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

//  Starting in Chilkat v11.7.0, RemoveSignature can remove the Authenticode signature from
//    - Windows Installer packages (.msi)
//    - PowerShell scripts, modules, and data files (.ps1, .psm1, .psd1)
//    - VBScript files (.vbs)
//  in addition to EXE and DLL files.

//  This example removes the signature from a signed PowerShell script.
//  To remove the signature from an .msi or a .vbs, pass the path of that file instead.
path := 'C:/someDir/Deploy.ps1';

codeSign := TChilkatCodeSign.Create(Self);

//  The file is modified in place.  Keep a copy if the signed file is still needed.
//  
//  For a PowerShell or VBScript file, the signature comment block is removed from the end of the file.
//  For an MSI, the digital signature stream and the extended signature stream (MsiDigitalSignatureEx)
//  are removed from the package.
success := codeSign.RemoveSignature(path);
if (success = 0) then
  begin
    Memo1.Lines.Add(codeSign.LastErrorText);
    Exit;
  end;

Memo1.Lines.Add('The signature was removed.');

//  The file is now unsigned, so VerifySignature returns false.
sigInfo := TChilkatJsonObject.Create(Self);
valid := codeSign.VerifySignature(path,sigInfo.ControlInterface);
Memo1.Lines.Add('has a valid signature: ' + IntToStr(Ord(valid)));