package Win32::Exe::Resource::Manifest;
use strict;
use base 'Win32::Exe::Resource';
use constant FORMAT => (
Data => 'a*',
);
sub get_manifest {
my ($self ) = @_;
return $self->dump;
}
sub get_manifest_id {
my $self = shift;
my ($type, $id, @rest);
eval{ ($type, $id, @rest) = $self->path; };
$id or return 1;
$id =~ s/^#//;
return( $id =~ /^(1|2|3)$/) ? $id : 1;
}
sub set_manifest {
my ( $self, $xmltext, $mid ) = @_;
$mid ||= 1;
$mid = ( $mid =~ /^(1|2|3)$/ ) ? $mid : 1;
$self->SetData( $self->encode_manifest($xmltext) );
my $rsrc = $self->first_parent('Resources');
$rsrc->remove("/#RT_MANIFEST");
$rsrc->insert('/#RT_MANIFEST/#' . $mid . '/#0' => $self);
$rsrc->refresh;
}
sub update_manifest {
my ( $self, $xmltext ) = @_;
$self->SetData( $self->encode_manifest($xmltext) );
}
sub encode_manifest {
my ($self, $string) = @_;
use bytes;
return pack("a*", $string);
}
sub default_manifest {
my ( $self ) = @_;
my $defman = <<'W32EXEDEFAULTMANIFEST'
Perl.Win32.Application
W32EXEDEFAULTMANIFEST
;
return $defman;
}
1;
x
Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586