um, yeah, wrote this a while ago, ... not convinced its worth pursuing
#!/usr/bin/perl --
use strict; use warnings;
use Data::Dump qw/ dd /;
Main( @ARGV );
exit( 0 );
sub Main {
@_ or return print Usage();
for my $inf( @_ ){
Snack::Attack( $inf );
}
} ## end sub Main
sub Usage {
print <<"__USAGE__";
$0
$0 foo.pl
$0 foo.pl bar.pl baz.pl ...
makes
foo.exe bar.exe baz.exe ...
__USAGE__
} ## end sub Usage
BEGIN {
package Snack;
$INC{'Snack.pm'} = __FILE__;
use Config();
use Proc::Background;
use File::HomeDir;
use Data::Dump qw/ dd /;
use File::Which qw( which );
use Capture::Tiny qw/ capture /;
use List::AllUtils qw( uniq );
use File::Find::Rule qw/ rule find /;
use Storable qw/ retrieve /;
use Path::Tiny qw/ path /;
our $MY_DATA = File::HomeDir->my_data;
#~ our $MY_DATA = Cwd::cwd();
our $PP = which('pp') or die "pp not installed ";
our $WXPAR = which('wxpar') or die "wxpar not installed ";
our $SCANDEPS = which('scandeps') or die "scandeps not installed
+";
our $OBJDUMP = which('objdump') ;
our $PARL = which('parl') ;
our $EXE_UPDATE= which('exe_update') || which('exe_update.pl');
our $CACHEFILE = "$MY_DATA/par-pp-CACHEFILE.dat";
our @EXCLUDE_CONFIG_LIBS = map { "$_.$Config::Config{so}" } $Confi
+g::Config{libs} =~ m{-l(\S+)}g ;
our @INCLUDE_PERL_LIBS ;
our @EXCLUDE_PARL_LIBS ;
## https://en.wikipedia.org/wiki/$PATH
our @PATH = uniq(
File::Spec->curdir,
File::Spec->path,
grep { -e $_ } $Config::Config{installsitebin}, $Config::Confi
+g{installvendorbin}, $Config::Config{installbin}
);
#~ }
sub new {
my( $class, %args ) = @_;
my $self = bless {
MY_DATA => $MY_DATA,
PP => $PP,
WXPAR => $WXPAR,
SCANDEPS => $SCANDEPS,
OBJDUMP => $OBJDUMP,
REFLESSINC => [ grep { !ref$_ } @INC ],
PATH => [ @PATH ],
%args
}, $class;
undef %args;
my $infile = $self->{infile} or die "need infile";
my $outfile = $infile ;
$outfile =~ s/\.(?:plx|pl|plw|pm|pod|t|txt)//i;
$outfile .= $Config::Config{exe_ext} if $Config::Config{exe_ex
+t};
$self->{outfile} ||= $outfile;
$self->{CACHEFILE} = $CACHEFILE ; ## it is shared
@EXCLUDE_PARL_LIBS or @EXCLUDE_PARL_LIBS = $self->dll_linked(
+ [ $PARL ] ); ## should be global ... and filtered on %windir% and/or
+ $^X
@INCLUDE_PERL_LIBS or @INCLUDE_PERL_LIBS = $self->dll_linked(
+ [ $^X ] ); ## should be global ... and filtered on %windir% and/or $
+^X
$self->{EXCLUDE_CONFIG_LIBS} ||= [ @EXCLUDE_CONFIG_LIBS ];
$self->{INCLUDE_PERL_LIBS} ||= [ @INCLUDE_PERL_LIBS ];
$self->{EXCLUDE_PARL_LIBS} ||= [ @EXCLUDE_PARL_LIBS ];
return $self;
} ## end sub new
#~ sub exists {
#~ sub dll_cached {
sub dll_get_fullpath {
my( $self, $key ) = @_;
my $short = lc path( $key )->basename; ## yuck
return $self->{dll_paths}{ $short };
}
#~ sub add_dll {
sub dll_add_path {
my( $self, $key, $fullpath ) = @_;
$fullpath ||= $key;
my $short = lc path( $key )->basename;
my $full = "".path( $fullpath )->realpath; ## should be real
warn "dll_add_path( $short )( $full ) ";
$self->{dll_paths}{ $short } ||= $full; ## PUSH!?!?! { md5sum
+}{ filepath }++
return;
}
sub dll_linked_already {
my( $self, $file ) = @_;
#~ warn "@_ ";
my $duh = $self->{dll_linked_already}{ "".path( $file)->realpa
+th }++;
return $duh;
} ## end sub dll_linked_already
#~ sub linked_dlls {
sub dll_linked { ## TODO stuff
my $self = shift;
my $filesref = shift;
my $depth = shift || 0;
if( $depth > 0 ){ warn "UHOH depth $depth " }
my @files = grep { ! $self->dll_linked_already($_) } @$file
+sref;
$depth == 0 and not(@files) and die "UH OH empty $filesref ",
+Data::Dump::pp( $filesref ), " ";
@files or warn("no eligible files at depth $depth in " , Data:
+:Dump::pp( $filesref ), " ") and return();
my @realdirs = map { "".path($_)->parent } @files;
push @realdirs, @{ $self->{REFLESSINC} };
my $OBJDUMP = $self->{OBJDUMP} or die "objdump not installed
+";
my( $stdout, $stderr, $exit ) = capture {
system( $OBJDUMP, '-p', @files );
};
if( $exit ){
$stderr =~ s{\s+$}{};
warn "(@files):$exit: $stderr ";
return;
}
#~ ::dd(-cap,[( $stdout, $stderr, $exit ) ]);
my @dlls = $stdout =~ /DLL.Name:\s*(\S+)/gmi;
@dlls = uniq( @dlls );
RELFILE:
for my $relfile ( @dlls ){
if( my $full = $self->dll_get_fullpath( $relfile ) ){
warn "SKIPPING( $relfile ) BECAUSE( $full ) ";
next RELFILE;
}
REFLESS:
for my $inc ( @realdirs ){
my $file = "$inc/$relfile";
if( -e $file ){
$relfile = $file;
$self->dll_add_path( $relfile );
#~ last REFLESS;
next RELFILE;
}
}
if( my $whichfile = $self->dll_which( $relfile ) ){
$relfile = $whichfile;
$self->dll_add_path( $relfile );
}
}
## recurse , infinitely
{
my @recurse_files;
for my $file ( @dlls ){
if( not -e $file ){
warn "SKIPPING FROM RECURSION RELATIVE UNRESOLVED
+( $file ) ";
} else {
push @recurse_files, $file;
}
}
if( @recurse_files and $depth < 7 ){
push @dlls, $self->dll_linked( \@recurse_files , $dept
+h+1 ) ;
}
#~ push @dlls, $self->dll_linked( \@recurse_files , $depth
++1 ) if $depth < 5;
}
if( $depth == 0 ){
for my $file ( @dlls ){
if( path( $file )->is_absolute ){
$self->dll_add_path( $file );
} else {
warn "UHOHUHOHUHOHUHOH( $file ) ";
}
}
}
return wantarray ? @dlls : $dlls[0];
} ## end sub dll_linked
#~ sub dllwhich {
sub dll_which {
::dd(\@_);
my $self = shift;
my @paths = ( @{$self->{PATH}} );
return undef unless @_;
my $all = wantarray;
my @files = map {
my @fyle = $_;
if( not /\.[^\.]+/ ){
@fyle = ( "$_.dll", "$_.so" ); ## stupid mod_perl file
+names .... why would I care?
}
@fyle
} @_;
@files = $files[0] if not $all;
my @dlls;
for my $file ( @files ){
if( (my $realdll = path($file ) )->is_absolute ){
push @dlls, "$realdll" if $realdll->is_file;
next;
}
for my $path ( @paths ){
if( my $realdll= eval{ path( $path, $file )->realpath
+}){
push @dlls, "$realdll" if $realdll->is_file;
}
}
}
$all ? @dlls : $dlls[0];
} ## end sub dll_which
sub plx_scandeps {
my $self = shift;
my( $SCANDEPS, $infile, $CACHEFILE ) = @{$self}{qw{ SCANDEPS i
+nfile CACHEFILE }};
my @args = ( $SCANDEPS, '-V', '-c', '-C' => $CACHEFILE, $infil
+e );
::dd( \@args );
my( $stdout, $stderr, $exit ) = capture {
system @args,
};
if( $exit ){
$stderr =~ s{\s+$}{};
warn "plx_scandeps(( $infile ))(( $CACHEFILE )):exit($exit
+): $stderr ";
return;
}elsif( $stderr ){
warn "$stderr\n";
}
my @dlls = $stdout =~ m{#\s+(\S+?\Q$Config::Config{so}\E)\s+\[
+shared\]}g;
if( $stdout =~ m{(IUP|FLTK|Tk|Wx|Prima|Gtk|Qt|Win32.GUI|SDL|X1
+1|PerlObjCBridge)\.pm}i ){
$self->{"DETECTED_$1"} = $1;
$self->{"DETECTED_GUI"} = $1;
}
$self->{SCANDEPS_DLLS} = [ @dlls ];
for my $relfile ( @dlls ){ ## turn auto/... into $INC[]/auto..
+.
REFLESS:
for my $inc ( @{ $self->{REFLESSINC} } ){
my $file = "$inc/$relfile";
if( -e $file ){
$relfile = $file;
$self->dll_add_path( $relfile );
last REFLESS;
}
}
}
$self->{SCANDEPS_DLLS_FULLAPTH} = [ @dlls ];
$self->{SCANNED_SCANDEPS_DLLS} = [ $self->dll_linked( \@dlls )
+ ];
return $self;
} ## end sub plx_scandeps
sub Snack::Attack {
::dd(\@_);
my $infile = shift;
@_ and die "no more args fool ";
my $self = Snack::->new( infile => $infile );
::dd( $self );
$self->plx_scandeps;
::dd( $self );
#~ return;
$self->pack_exe;
#~ $self->try_it_out;
return;
} ## end sub Snack::Attack
sub pack_exe {
my $self = shift;
my @args = (
$self->{DETECTED_Wx}
? $self->{WXPAR}
: $self->{PP}
,
'--cachedeps' => $self->{CACHEFILE} , '-vvv',
);
push @args, '-M' => 'Wx::Perl::Packager' if $self->{DETECTED_W
+x};
#~ push @args, '--gui' if $self->{DETECTED_GUI};
#~
{
#~ my $goners_re = join '|', map { quotemeta($_) } @{ $sel
+f->{EXCLUDE_CONFIG_LIBS} };
my $goners_re = do {
my @goners = ( @{ $self->{EXCLUDE_CONFIG_LIBS} }, @{ $
+self->{EXCLUDE_PARL_LIBS} } );
@goners = map { path( $_ )->basename } @goners;
join '|', map { quotemeta($_) } uniq( @goners );
};
my $windir = $ENV{WINDIR}; ## win32itis win64itis winitis
my %dlls ;;
for my $relfile ( @{ $self->{INCLUDE_PERL_LIBS} } , @{ $se
+lf->{SCANNED_SCANDEPS_DLLS} } , ){
if( my $full = $self->dll_get_fullpath( $relfile ) ){
my $windired = 0;
$windired = 1 if defined $windir and path($windir)
+->subsumes($full);
if( $relfile =~ m{$goners_re$}i or $windired ){
warn "removing -l ($relfile) ";
} else {
warn "adding -l ($full) ";
$dlls{$full}++;
}
if( not $relfile =~ m{^(?:a(?:a(?:aamon|client)|c(
+?:c(?:essibilitycpl|tres)|l(?:edit|ui)|p(?:page|roxy)|t(?:i(?:on(?:ce
+nter(?:cpl)?|queue)|veds)|xprxy))|d(?:h(?:api|svc)|m(?:parse|tmpl)|p(
+?:rovider|tif)|rclient|s(?:ldpc?|msext|n(?:ds|[tw]))|tschema|v(?:api3
+2|pack))|e(?:cache|evts|inv|lupsvc|p(?:du|ic))|l(?:rsvc|ttab)|m(?:str
+eam|xread)|p(?:cups|ds|i(?:\-ms\-win\-(?:appmodel\-(?:identity|runtim
+e|state)\-l1\-1\-0|base\-(?:bootconfig|util)\-l1\-1\-0|core\-(?:a(?:p
+(?:iquery|p(?:compa|ini)t)|toms)\-l1\-1\-0|b(?:em|i(?:clt|p(?:lm|tclt
+))api)\-l1\-1\-0|c(?:o(?:m(?:\-private|m)?\-l1|nsole\-l[12])|rt\-l[12
+])\-1\-0|d(?:atetime\-l1\-1\-[01]|e(?:bug\-l1\-1\-[01]|layload\-l1\-1
+\-[01]))|errorhandling\-l1\-1\-[01]|fi(?:bers\-l(?:1\-1\-[01]|2\-1\-0
+)|le\-l(?:1\-[12]|2\-1)\-0|rmware\-l1\-1\-0)|h(?:andle\-l1\-1|eap\-(?
+:l1\-[12]|obsolete\-l1\-1))\-0|i(?:nterlocked\-l1\-[12]\-0|o\-l1\-1\-
+[01])|job\-l[12]\-1\-0|kernel32\-(?:legacy|private)\-l1\-1\-0|l(?:ibr
+aryloader\-l1\-1\-[01]|ocal(?:ization\-(?:l(?:1\-[12]|2\-1)|obsolete\
+-l1\-1|private\-l1\-1)|registry\-l1\-1)\-0)|m(?:emory\-l1\-1\-[01]|is
+c\-l1\-1\-0|ultipleproviderrouter\-l1\-1\-0)|n(?:ame(?:dpipe\-l1\-[12
+]|space\-l1\-1)|ormalization\-l1\-1)\-0|p(?:ath\-l1\-1\-0|r(?:ivatepr
+ofile\-l1\-1\-0|o(?:cess(?:environment\-l1\-[12]\-0|security\-l1\-1\-
+0|t(?:hreads\-l1\-1\-[01]|opology\-(?:obsolete\-)?l1\-1\-0))|file\-l1
+\-1\-0))|s(?:api(?:\-(?:ansi|obsolete))?|m\-(?:app|info|plm))\-l1\-1\
+-0)|r(?:e(?:altime\-l1|gistry(?:\-(?:l[12]|private\-l1)|userspecific\
+-l1))\-1|tlsupport\-l1\-[12])\-0|s(?:h(?:lwapi\-(?:legacy|obsolete)|u
+tdown)\-l1\-1|idebyside\-l1\-1|tring(?:\-(?:l[12]|obsolete\-l1)|ansi\
+-l1|loader\-l1)\-1|y(?:nch\-l1\-[12]|s(?:info\-l1\-[12]|temtopology\-
+l1\-1)))\-0|t(?:hreadpool\-(?:l(?:1\-[12]|egacy\-l1\-1)|private\-l1\-
+1)|imezone\-(?:private\-)?l1\-1|oolhelp\-l1\-1)\-0|u(?:ti|r)l\-l1\-1\
+-0|version(?:\-private|ansi)?\-l1\-1\-0|w(?:in(?:dowserrorreporting|r
+t(?:\-(?:error(?:private)?|propertysetprivate|r(?:egistration|o(?:buf
+fer|parameterizediid))|string))?)|ow64)\-l1\-1\-0|xstate\-l1\-1\-[01]
+)|d(?:evices\-(?:config|query|swdevice)\-l1|ownlevel\-(?:advapi32\-l[
+12]|normaliz\-l1|ole32\-l1|sh(?:ell32\-l1|lwapi\-l[12])|user32\-l1|ve
+rsion\-l1)|x\-d3dkmt\-l1)\-1\-0|event(?:ing\-(?:c(?:lassicprovid|on(?
+:sum|troll))er|legacy|obsolete|provider)|log\-(?:legacy|private))\-l1
+\-1\-0|gdi\-ie\-rgn\-l1\-1\-0|http\-time\-l1\-1\-0|input\-ie\-interac
+tioncontext\-l1\-1\-0|mm\-(?:joystick\-l1|m(?:ci\-l1|isc\-l[12]|me\-l
+1)|playsound\-l1|time\-l1)\-1\-0|n(?:et\-isolation|tuser\-(?:dc\-acce
+ss|ie\-(?:clipboard|message|w(?:indow|mpointer))|rectangle|sysparams|
+uicontext))\-l1\-1\-0|ole32\-ie\-l1\-1\-0|power\-(?:base|setting)\-l1
+\-1\-0|ro\-typeresolution\-l1\-1\-0|s(?:e(?:curity\-(?:a(?:ctivedirec
+toryclient|ppcontainer|udit)\-l1\-1\-0|base\-(?:l1\-[12]|private\-l1\
+-1)\-0|credentials\-l[12]\-1\-0|grouppolicy\-l1\-1\-0|lsa(?:lookup\-l
+(?:1\-1\-[01]|2\-1\-0)|policy\-l1\-1\-0)|provider\-l1\-1\-0|s(?:ddl(?
+:\-ansi|parsecond)?|ystemfunctions)\-l1\-1\-0|trustee\-l1\-1\-0)|rvic
+e\-(?:core\-l1\-1\-[01]|management\-l[12]\-1\-0|private\-l1\-1\-0|win
+svc\-l1\-[12]\-0))|h(?:core\-(?:comhelpers|obsolete|registry|s(?:cali
+ng|tream(?:\-winrt)?|ysinfo)|thread|unicodeansi)|ell\-shell(?:com|fol
+ders)|lwapi\-ie)\-l1\-1\-0))|logen|rcl|setschema)|p(?:h(?:elp|lpdm)|i
+(?:d(?:api|policyengineapi|svc)|nfo)|mg(?:mts|r)|rep(?:api|sync)|srup
+rov|x(?:alluserstore|deployment(?:client|extensions|server)|packaging
+|s(?:ip|treamingdatasourceps|ysprep)))|ss)|s(?:ferror|pnet_counters|y
+cfilt)|t(?:kctrs|mpvcno|race|l)|u(?:di(?:o(?:dev|en(?:dpointbuilder|g
+)|kse|s(?:es|rv))|t(?:cse|nativesnapin|pol(?:icygpinterop|msg)))|inst
+allagent|t(?:h(?:broker|ext|fw(?:cfg|gp|snapin|wizfwk)|hostproxy|ui|z
+)|o(?:disc|play))|xiliarydisplay(?:api|c(?:lassinstaller|pl)|driverli
+b|services))|v(?:i(?:cap|fil)32|meter|rt|tapi|wav)|xinstsv|z(?:role(?
+:ui|s)|sqlext))\.dll|b(?:a(?:se(?:csp|srv)|t(?:meter|t))|c(?:d(?:pro|
+sr)v|p47langs|rypt(?:primitives)?)|de(?:hdcfglib|repair|svc|ui)|fe|i(
+?:displ|oc(?:pl|redprov)|srv|ts(?:igd|p(?:erf|rx[234567]))|winrt)|l(?
+:ackbox|b(?:_p|event|re)s|uetoothapis)|oot(?:menuux|res|str|ux|vid)|r
+(?:dgcfg|idgeres|ow(?:cli|se(?:lc|ui|wm|r)))|t(?:h(?:ci|hfsrv|mtpcont
+exthandler|panapi|radiomedia|s(?:erv|qm))|panui)|wunpairelevated|i)\.
+dll|c(?:_(?:g18030|is(?:2022|cii))|a(?:b(?:inet|view)|llbuttons(?:\.p
+roxystub)?|mocx|p(?:esnpn|i(?:provider|sp))|rd(?:game)?s|tsrv(?:ps|ut
+)?)|c(?:fgnt|a)|d(?:fview|modem|osys|[dm])|e(?:rt(?:c(?:li|redprovide
+r|a)|en(?:roll(?:ui)?|c)|mgr|p(?:oleng|rop))|wmdm)|f(?:g(?:bkend|mgr3
+2)|mifs(?:proxy)?)|h(?:artv|kwudrv|sbrkr|tbrkr|xreadingstringime)|i(?
+:admin|odm|rcoinst|c)|l(?:bcat(?:ex|q)|fsw32|iconfg|rhost|usapi|b)|m(
+?:cfg32|d(?:ext|ial32)|i(?:cryptinstall|fw|pnpinstall)|lua|nclim|p(?:
+bk32|rops)|s(?:etacl|tplua)|util)|n(?:bjmon|etcfg|g(?:audit|credui|pr
+ovider)|vfat)|o(?:firedm|l(?:bact|or(?:cnv|ui))|m(?:addin|base|c(?:at
+|tl32)|dlg32|pstui|re(?:pl|s)|s(?:nap|vcs)|uid)|n(?:fmsp|nect(?:edacc
+ountstate)?|s(?:entux|ole))|py|r(?:pol|rengine))|pfilters|r(?:ed(?:ss
+p|ui)|ppresentation|tdll|ypt(?:32|base|catsvc|dl[gl]|ext|net|owinrt|s
+(?:vc|p)|ui(?:wizard)?|xml))|s(?:c(?:api|dll|mig|obj|svc|ui)|rsrv|seq
+chk)|tl3d32|i)\.dll|d(?:2d1|3d(?:1(?:0(?:_1(?:core)?|core|level9|warp
+)|[01])|8thk|im(?:700)?|pmesh|r(?:amp|m)|xof|[89])|a(?:conn|f(?:bth|p
+rintprovider|upnp|w(?:cn|fdprovider|sd))|mm|nim|otpcredentialprovider
+|t(?:aclen|ime|usage)|v(?:clnt|hlpr)|s)|b(?:g(?:eng|help)|msrpcn|n(?:
+etlib|mpntw))|c(?:iman32|omp)|d(?:aclsys|o(?:iproxy|res)|p(?:_ps|chun
+k|trace|utils)|raw(?:ex)?)|e(?:f(?:ault(?:devicemanager|locationcpl|p
+rinterprovider)|rag(?:proxy|svc))|legatorprovider|sk(?:adp|mon|perf)|
+v(?:dispitemprovider|enum|i(?:ce(?:a(?:ccess|ssociation)|center|d(?:i
+splaystatusmanager|riverretrievalclient)|elementsource|metadata(?:par
+sers|retrievalclient)|pairing(?:folder|handler|proxy)?|setup(?:manage
+r(?:api)?|statusprovider)|uxres)|nv)|mgr|obj|propmgr|rtl))|f(?:dts|rg
+(?:res|snap|ui)|s(?:cli|him|shlex))|gnet|hcp(?:c(?:monitor|ore6?|svc6
+?)|mon|qec|sapi)|i(?:a(?:ctfrm|g(?:cpl|perf))|fxapi|gest|m(?:ap|s(?:j
+ob|ntfy|roam))|nput8?|s(?:can|kcopy|mapi|p(?:ci|ex|lay)))|lnashext|m(
+?:band|co(?:mpos|nfig)|d(?:lgs|sk(?:mgr|res2?))|i(?:me|ntf)|loader|oc
+x|rc|s(?:cript|erver|tyle|ynth)|u(?:sic|til)|v(?:dsitf|scres))|ns(?:a
+pi|cmmc|ext|hc|rslvr)|o(?:c(?:prop2?|umentperformanceevents)|t3(?:api
+|cfg|dlg|gp(?:clnt|ui)|hc|ms?m|svc|ui))|p(?:api(?:provider|srv)?|cdll
+|layx?|modemx|n(?:a(?:ddr|thlp)|et|h(?:past|upnp)|lobby|modem|wsock)|
+serial|v(?:acm|oice|vox)|wsockx?|[sx])|r(?:m(?:clien|mgrtn|stor|v2clt
+)|prov|t(?:prov|transport)|vstore|t)|s(?:32gt|auth|dmo(?:prp)?|howrdp
+filter|kquo(?:ta|ui)|ound(?:3d)?|p(?:arse|r(?:op|pres))|query|role|se
+(?:nh|c)|ui(?:ext)?|wave)|tsh|u(?:i70|ser)|w(?:m(?:api|core|redir)|ri
+te)|x(?:7vb|8vb|diagn|g(?:wd)?i|masf|p(?:ps|task(?:ringtone|sync))|t(
+?:msft|rans)|va2|p))\.dll|e(?:a(?:p(?:olqec|p(?:3hst|cfg|gnui|host|pr
+xy)|qec|svc)|s(?:consent|invoker\.proxystub|wrt))|fs(?:adu|core|lsaex
+t|svc|util)|hstor(?:api|pwdmgr|shell)|ls(?:core|hyph|lad|trans)?|n(?:
+c(?:api|d(?:ec|ump))|ergy(?:prov|task)?)|qossnap|rsvc|sent(?:97|prf)?
+|v(?:ent(?:cls|log)|r)|x(?:p(?:lorerframe|srv)|t(?:\-ms\-win\-(?:a(?:
+dvapi32\-(?:auth|e(?:ncryptedfile|vent(?:ingcontroller|log))|lsa|msi|
+ntmarta|psm\-app|registry|s(?:afer|hutdown))|uthz\-(?:c(?:laimpolicie
+s|ontext)|remote))|b(?:iometrics\-winbio|luetooth\-deviceassociation|
+randing\-winbrand)|c(?:luster\-(?:clusapi|resutils)|md\-util|ng\-rng|
+om\-(?:clbcatq|ole32|psmregister))|domainjoin\-netjoin|f(?:irewallapi
+\-webproxy|s(?:\-clfs|utilext\-(?:ifsutil|ulib)))|g(?:di\-(?:d(?:c\-c
+reate|evcaps|raw|c)|font|metafile|path|r(?:ender|gn)|wcs)|papi\-group
+policy|ui\-uxinit)|kernel(?:32\-(?:appcompat|datetime|errorhandling|f
+ile|package(?:\-current)?|registry|sidebyside|transacted|windowserror
+reporting)|base\-processthread)|m(?:f\-winmm|m\-(?:msacm|pehelper|wmd
+rmsdk)|pr\-multipleproviderrouter|rmcorer\-resmanager|siltcfg\-msi)|n
+(?:e(?:tworking\-winipsec|wdev\-config)|t(?:dsa(?:\-activedirectoryse
+rver|pi\-activedirectoryclient)|os\-(?:ks(?:ecurit|igningpolic)y|tm)|
+user\-(?:caret|d(?:c\-access\-ext|ialogbox|raw)|gui|keyboard|m(?:e(?:
+nu|ssage)|isc|ouse)|p(?:owermanagement|rivate)|rectangle\-ext|s(?:tri
+ng|y(?:nch|sparams\-ext))|window(?:class|station)?)))|ole32\-(?:bindc
+tx|clipboard\-ie|ie\-ext|oleautomation)|pr(?:inter\-winspool|ofile\-(
+?:profsvc|userenv))|r(?:as\-(?:ras(?:api32|dlg|man)|tapi32)|ometadata
+\-dispenser)|s(?:amsrv\-accountstore|cesrv\-server|e(?:cur(?:32\-tran
+slatename|ity\-(?:cr(?:ed|ypt)ui|kerberos|vaultcli))|ssion\-(?:userin
+it|w(?:in(?:init|sta)|tsapi32))|tupapi\-(?:c(?:fgmgr32(?:local|remote
+)|lassinstallers)|inf|logging))|hell(?:32\-shell(?:com|folders)|\-(?:
+propsys|sh(?:ell32|lwapi)))|mbshare\-sscore|pinf\-inf|xs\-oleautomati
+on)|umpoext\-umpo|w(?:e(?:bio\-pal|r\-reporting|vtapi\-eventlog)|in(?
+:http|inet)\-pal|lan\-(?:grouppolicy|onexui|scard)|sclient\-devlicens
+e|wan\-wwapi))\-l1\-1\-0|mgr|s))|s)\.dll|f(?:3ahvoas|aultrep|d(?:bth(
+?:proxy)?|devquery|eploy|p(?:host|np|r(?:int|oxy))|respub|ssdp|w(?:cn
+|net|sd)|e)|e(?:client|edbacktool)|h(?:autoplay|c(?:at|fg|leanup|pl)|
+e(?:ngine|vents)|listen|s(?:hl|rch(?:api|ph)|vc(?:ctl)?)|task|ux(?:a(
+?:dapter|pi)|common|graphics|presentation))|i(?:le(?:appxstreamingdat
+asource|mgmt)|ndnetprinters|rewall(?:api|controlpanel))|l(?:drclnr|tl
+ib)|m(?:api|ifs|s)|ntcache|ont(?:ext|sub)|phc|r(?:ame(?:buf|dyn(?:os)
+?)|prov)|su(?:sd|tilext)|t(?:hsvc|lx041e|srch)|undisc|ve(?:api(?:base
+)?|c(?:erts|pl)|recover|skybackup|ui|wiz)|w(?:cfg|puclnt|remotesvr)|x
+s(?:api|com(?:ex|pose(?:res)?)?|e(?:vent|xt32)|mon|r(?:esm|oute)|st|t
+(?:30|iff)|utility|xp32))\.dll|g(?:a(?:cinstall|meux(?:legacygdfs)?)|
+cdef|di(?:32|plus)|e(?:nuinecenter|tuname)|l(?:cndfilter|mf32|u32)|p(
+?:api|edit|k(?:csp|rsrc)|pr(?:efcl|next)|s(?:cript|vc)|text)|roupingh
+c)\.dll|h(?:323msp|al(?:acpi|extintc(?:lpio|uart)dma|macpi)?|baapi|c(
+?:coin|providers)|elppaneproxy|g(?:cpl|print)|hsetup|id(?:serv)?|link
+|net(?:cfg|mon|wiz)|ot(?:plug|s(?:potauth|tartuseragent))|t(?:tp(?:ap
+i|prx[mp])|ui))\.dll|i(?:as(?:a(?:cct|ds)|datastore|hlpr|migplugin|na
+p|polcy|r(?:ad|ecst)|s(?:am|do|vcs))?|c(?:a(?:api|rd(?:ie|res))|coins
+tall|f(?:gnt5|upgd)|m(?:32|ui|p)|oncodecservice|s(?:igd|vc)|w(?:dial|
+phbk))|d(?:ctrls|listen|ndl|store|q)|e(?:a(?:dvpack|k(?:eng|sie|ui)|p
+fltr)|dkcs32|frame|peers|r(?:nonce|tutil)|s(?:etu|yspre)p|ui)|f(?:mon
+|sutilx?)|g(?:ddiag|mpagnt)|issuba|keext|ls|m(?:a(?:ge(?:hlp|res|sp1)
+|pi(?:2fs|2)?)|eshare|gutil|jp(?:10|81)k|m32)|n(?:et(?:c(?:fg|omm|plc
+)|mib1|pp(?:ui)?|res)|fo(?:cardapi|soft)|itpki|ked|put(?:switch)?|sen
+g)|ologmsg|p(?:busenum(?:proxy)?|hlp(?:api|svc)|montr|nathlp|promon|r
+(?:op|t(?:prio|rmgr))|s(?:ecs(?:np|vc)|msnap)|v6mon|x(?:montr|promn|r
+(?:ip|tmgr)|sap|wan))|r(?:32_32|41_qcx?|50_(?:32|qcx?)|class|mon)|s(?
+:csi(?:cpl|dsc|e(?:xe|d)|log|um|wmi(?:v2)?)|ign32)|t(?:ircl|ss|vdata)
+|u(?:engine|ilp)|xsso|yuv_32)\.dll|j(?:et500|nwmon|obexec|s(?:cript9?
+|proxy))\.dll|k(?:bd(?:10(?:1[abc]|6n|[136])|a(?:rm(?:ph|ty|[ew])|x2|
+zel?|[123l])|b(?:ash|ene|gph1?|hc|lr|ulg|[eru])|c(?:an|herp?|z[12]|[a
+rz])|d(?:iv[12]|[av])|est?|f(?:ar|i1|[acior])|g(?:ae|eo(?:er|me|oa|qw
+)?|kl|r(?:lnd|1)|r)|h(?:a[uw]|e(?:220|319|bl3|la[23]|pt|b)|u1|[eu])|i
+(?:b(?:m02|o)|n(?:asa|be[12n]|dev|en|guj|hin|kan|ma[lr]|ori|pun|t(?:a
+m|el)|uk2)|t142|ul(?:at|tn)|[crt])|jpn|k(?:az|hmr|ni|or|urd|yr)|l(?:a
+o|isu[bs]|k41[aj]|t[12]|v1|[atv])|m(?:a(?:cst|ori|c)|lt4[78]|on(?:mo)
+?|yan)|n(?:e(?:c(?:95|at|nt)|pr|c)|ko|o1|so|tl|[eo])|ogham|p(?:ash|ha
+gs|l1|[lo])|r(?:o(?:pr|st)|u[1m]|[ou])|s(?:l1|ms(?:fi|no)|n1|or(?:ex|
+s[1t])|w09|yr[12]|[fglpw])|t(?:a(?:ile|jik|t)|h[0123]|i(?:fi2?|prc)|u
+(?:rme|[fq]))|u(?:ghr1?|kx|r(?:du|1)|s[alrx]|zb|[krs])|vntc|wol|y(?:a
+k|ba|c[cl]))|d(?:1394|_02_(?:1(?:0ec|4e4)|8086)|com|hv1394|net|s(?:cl
+i|tub)|usb|vm)|e(?:epaliveprovider|r(?:beros|nel(?:32|base|ceip))|y(?
+:iso|mgr))|msvc|orwbrkr|suser|tmw32|d)\.dll|l(?:2(?:gpstore|nacp|sech
+c)|a(?:ng(?:cleanupsysprepaction|wrbk)|prxy)|i(?:c(?:dll|mgr10|wmi)|n
+kinfo|stsvc|vessp)|l(?:dpnotify|td(?:api|res|svc))|m(?:hsvc|rt)|o(?:a
+dperf|ca(?:l(?:s(?:ec|pl)|ui)|tionapi)|g(?:hours|oncli))|p(?:ksetuppr
+oxyserv|r(?:help|monui)|k)|s(?:asrv|cshostpolicy|mproxy|m)|uainstall|
+z32)\.dll|m(?:a(?:g(?:_hook|nification)|intenanceui|pi(?:32|stub))|b(
+?:ae(?:api(?:public)?|xmlparser)|smsapi|ussdapi)|c(?:astmib|d(?:srv)?
+32|ewmdrmndbootstrap|hgrcoi|i(?:avi32|cda|ole32|qtz32|seq|wave)|mde|s
+rchph|tres|update_(?:authenticamd|genuineintel)|x(?:2svc|driv))|d(?:h
+cp|minst)|e(?:diametadatahandler|m(?:diag|orydiagnostic))|f(?:3216|a(
+?:acenc|sfsrcsnk)|c(?:4(?:0u|2u|[02])|70|aptureengine|ore|subs)|d(?:v
+dec|s)|error|h264enc|m(?:ediaengine|jpegdec|p(?:eg2|4)srcsnk)|net(?:c
+ore|src)|p(?:la[ty]|s)|readwrite|s(?:rcsnk|vr)|transcode|vdsp|wmaaec)
+|gmtapi|i(?:crosoft(?:\-windows\-(?:battery\-events|hal\-events|kerne
+l\-p(?:np|ower|rocessor\-power)\-events|p(?:dc|rocessor\-aggregator\-
+events))|\.managementconsole)|dimap|g(?:flt|isol|libnt|uiresource)|me
+filt|utils)|l(?:ang|l_(?:hp|mtf|qic))|m(?:c(?:base|ex|fxcommon|ico|nd
+mgr|s(?:hext|s)|i)|d(?:evapi|rv)|futil|res|utilse)|nmdd|o(?:bsync|de(
+?:mui|x)|ntr_ci|ricons)|p(?:3dmod|4(?:3d(?:ec|mo)|sd(?:ec|mo))d|g4d(?
+:ec|mo)d|r(?:api|d[di]m|ext|msg|ui)|ssvc|r)|q(?:ad|certui|dscli|gentr
+|ise|logmgr|oa|perf|qm|rt(?:dep)?|s(?:ec|nap)|trig|u(?:pgrd|til))|rm(
+?:cor|index)er|s(?:a(?:atext|c(?:3enc|m32)|fd|psspc|sn1|ud(?:decmft|i
+te))|c(?:a(?:ndui|t32)|hed|lmd|ms|o(?:nf|r(?:ee|ie[rs]))|px(?:32r|l32
+)|tf(?:monitor|ui|p)?)|d(?:a(?:diag|rt)|bg2|elta|mo|r[im]|tc(?:krm|lo
+g|prx|tm|uiu|vsp1res)|xmlc)|e(?:ncode|xc[hl]40)|f(?:eeds(?:bs)?|tedit
+)|g(?:ina|svc)|html(?:e[dr])?|i(?:cofire|d(?:crl[34]0|ent|le|ntld)|ef
+tp|hnd|ltcfg|m(?:g32|sg|tf)|r3jp|sip|wer)|j(?:et(?:oledb)?|int|te[rs]
+)40|keyprot(?:cli|ect)|l(?:bui|s31|tus40)|m(?:msp|peg2(?:ade|en|vde)c
+)|n(?:etobj|sspc)|o(?:bjs|e(?:acct|rt2)|rc(?:32r|l32))|p(?:atch[ac]|b
+d(?:acoinst|e40|a)|ms(?:nsv|p)|orts|rivs)|r(?:2c(?:enu)?|a(?:hc|t(?:e
+lc|ing))|clr40|d(?:2x40|3x40|pwebaccess|c)|e(?:cr|pl)40|le32)|s(?:ap|
+c(?:ntrs|p)|h(?:avmsg|ooks|a)|i(?:gn32|p32|tlb)|p(?:ellcheckingfacili
+ty|htb|rxy|h)|rch|vp|wch)|t(?:ask|ext(?:40|prediction)|ime|lsapi|scax
+)|utb|v(?:1_0|bvm[56]0|c(?:irt|p(?:110_clr040|[56])0|r(?:1[01]0_clr04
+00|70|t[24]0|t))|fw32|id(?:c(?:32|tl)|eodsp)|proc)|w(?:3prt|dat10|ebd
+vd|mdm|s(?:ock|tr10))|x(?:bde40|ml(?:2r|3r|6r|[236r])?)|yuv|i)|tx(?:c
+lu|dm|ex|legih|oci)|ui(?:fontset|languageclean)up|y(?:comput|docs)|[f
+i])\.dll|n(?:a(?:p(?:crypt|dsnap|hlpr|i(?:nsp|psec)|montr)|rrhook|t(?
+:ivehooks|urallanguage6))|c(?:a(?:api|svc)|bservice|d(?:autosetu|pro)
+p|objapi|rypt(?:prov|sslp|ui)?|si|xpnt|i)|d(?:de(?:api|nb32)|f(?:api|
+etw|hcdiscovery)|is(?:capcfg|hc|implatform)|proxystub|uprov)|e(?:goex
+ts|t(?:api32|bios|c(?:enter|fgx|orehc)|diagfx|event|fxperf|i(?:ohlp|d
+)|join|logon|m(?:an|sg)|p(?:lwiz|ro(?:fm(?:svc)?|jw|visionsp|f))|rap|
+shell|trace|u(?:i[012]|tils)|work(?:explorer|itemfactory|map|status)|
+h)|wdev)|input|l(?:a(?:api|hc|svc)|html|m(?:gp|proxy|sprep)|s(?:bres|
+d(?:ata0(?:0(?:0[012379acdf]|1[01389abd]|2[012467a]|3[9e]|4[5679abce]
+)|41[46]|81[6a]|c1a)|l)|lexicons0(?:0(?:0[12379acdf]|1[01389abd]|2[01
+2467a]|3[9e]|4[5679abce])|41[46]|81[6a]|c1a)|models0011))|m(?:evtmsg|
+mkcert)|ormaliz|p(?:mproxy|ptools)|rpsrv|s(?:h(?:http|ipsec|wfp)|isvc
+|i)|t(?:asn1|d(?:ll|s(?:ap|bcl)i)|l(?:an(?:man|ui2?)|sapi)|m(?:arta|s
+(?:api|dba|evt|mgr|svc))|print|s(?:dexts|hrui)|vdm(?:cpl|d))|w(?:api(
+?:16|32)|cfg|event|provau|wks))\.dll|o(?:akley|bjsel|c(?:cache|manage
+|setapi)|d(?:bc(?:32(?:gt)?|bcp|c(?:onf|p32|r32|u32)|int|j[it]32|p32r
+|trac)|dbse32|exl32|fox32|pdx32|text32)|emlicense|fffilt|gldrv|le(?:3
+2|a(?:cc(?:hooks|rc)?|ut32)|c(?:li|nv)32|dlg|pr(?:o32|n)|res|svr32|th
+k32)|n(?:ex(?:ui)?|lineidcpl)|obefldr|p(?:cservices|engl32)|s(?:basel
+n|ksupport|uninst))\.dll|p(?:2p(?:collab|g(?:asvc|raph)|netsh|svc)?|a
+(?:ckage(?:stateroaming|r)|nmap|utoenr)|c(?:a(?:cli|dm|evts|svc|ui)|p
+(?:ksp|tpm12)|wu(?:tl|m))|dh(?:ui)?|e(?:erdist(?:ad|cleaner|httptrans
+|s(?:vc|h)|wsddiscoprov)?|rf(?:c(?:entercpl|trs)|disk|n(?:et|w)|os|pr
+oc|t(?:rack|s)))|hoto(?:metadatahandler|wiz)|i(?:dgenx?|fmgr|d)|jlmon
+|ku2u|l(?:ay(?:listfolder|sndsrv|to(?:manag|statusprovid)er)|ustab|a)
+|mcsnap|n(?:gfilt|idui|p(?:policy|setup|ts|ui|xassoc(?:prx)?)|rp(?:au
+to|hc|nsp|svc))|o(?:lstore|rtabledevice(?:api|c(?:lassextension|onnec
+tapi)|s(?:tatus|yncprovider)|types|w(?:iacompat|mdrm))|ts|w(?:ercpl|r
+prof))|pcsnap|r(?:esentation(?:cffrasterizernative_v0300|hostproxy|na
+tive_v0300)|flbmsg|int(?:dialogs|filterpipelineprxy|isolationproxy|ui
+)|n(?:cache|fldr|ntfy|tvpt)|o(?:cinst|f(?:api|ext|map|prov|svc(?:ext)
+?)|psys|v(?:core|svc|thrd)|ximity(?:common|service))|vdmofcomp)|s(?:a
+pi|base|chdprf|hed|isdecd|m(?:odulediscoveryprovider|srv)|nppagn|t(?:
+ask|or(?:sv|e)c))|u(?:i(?:api|obj)|rchasewindowslicense)|w(?:launcher
+|rshplugin|sso))\.dll|q(?:a(?:gent(?:rt)?|sf)|c(?:ap|liprov)|dvd?|ed(
+?:it|wipes)|mgr(?:prxy)?|osname|s(?:hvhos|vrmgm)t|u(?:artz|ery|til)|w
+ave)\.dll|r(?:a(?:c(?:engn|pldlg)|dar(?:dt|rs)|s(?:a(?:dhlp|pi32|uto)
+|c(?:fg|hap|trs)|d(?:ia|l)g|gcw|m(?:ans?|bmgr|ontr|xs|m)|p(?:la|p)p|q
+ec|rad|s(?:api|er)|t(?:api|ls)))|cbdyctl|d(?:chost|p(?:c(?:fgex|ore(?
+:kmts|ts)?)|d3?d|en(?:c(?:dd|om)|dp)|refd(?:rvapi|d)|snd|udd|wsx)|s(?
+:appxhelpe|dwmd)r|vvmtransport)|e(?:agent|covery|g(?:api|ctrl|idle|sv
+c|wizc)|mo(?:tepg|vedevice(?:contexthandler|elevated))|nd|s(?:ampledm
+o|eteng(?:mig)?|utils))|fxvmt|gb9rast|httpaa|iched(?:20|32)|mapi|nr20
+|o(?:amingsecurity|metadata|tmgr|utetab)|pc(?:diag|epmap|http|n(?:dfp
+|s[4h])|rt(?:remote|4)|ss)|s(?:aenh|fsaps|hx32|mps|trtmgr|vp(?:msg|pe
+rf|sp))|t(?:ffilt|ipxmib|utils|m)|wnh)\.dll|s(?:3legacy|a(?:fr(?:cdlg
+|dm|slv)|m(?:cli|lib|pleres|srv)|s)|be(?:io|res)?|c(?:a(?:nsetting|rd
+(?:dlg|s(?:sp|vr))|vengeui)|c(?:base|ls|sccp)|e(?:cli|srv|xt)|h(?:ann
+el|ed(?:cli|svc))|ksp|lgntfy|r(?:edir|ipto|obj|ptadm|run))|d(?:autopl
+ay|cpl|engin2|hcinst|iag(?:eng|prv|schd)|ohlp|pblb|rsvc|shext)|e(?:ar
+chfolder|c(?:host|logon|proc(?:_(?:isv|ssp(?:_isv)?))?|ur(?:32|ity))|
+n(?:d(?:cmsg|mail)|s(?:api|cfg|or(?:performanceevents|s(?:api|c(?:las
+sextension|pl)))|rsvc)|s)|r(?:ialui|vdeps|wvdrv)|ssenv|t(?:bcdlocale|
+networklocation|ting(?:monitor|sync(?:info)?)|up(?:api|cln|dll|etw)))
+|f(?:c(?:_o|file)s|mapi|c)|h(?:a(?:cct|remediacpl)|core|doc(?:lc|vw)|
+ell(?:32|style)|folder|gina|im(?:eng|gvw)|lwapi|media|pafact|s(?:crap
+|etup|vcs)|unimpl|websvc)|i(?:g(?:ndrv|tab)|m(?:auth|cfg)|sbkup)|kdll
+|l(?:ayerxp|cext|wga|c)|m(?:artcard(?:credentialprovide|simulato)r|b(
+?:helperclass|wmiv2)|iengine|logcfg|s(?:deviceaccessrevocation|pace|r
+outer)|tpapi)|n(?:dvolsso|mp(?:api|snap)|tsearch)|o(?:ft(?:kbd|pub)|r
+t(?:server2003compat|windows6(?:compat|1)))|p(?:acecontrol|bcd|cmsg|e
+rror|fileq|inf|m(?:pm|sg)|net|o(?:olss|pk)|p(?:c(?:ext|om(?:api|mdlg)
+|c)|inst|np|objs|uinotify|w(?:inob|mi)|c)|w(?:i(?:nsat|z(?:eng|img|re
+s|ui))|mp)|p)|q(?:l(?:ce(?:compact4|oledb[34]|qp[34]|se[34])0|srv32|u
+nirl|w(?:id|oa))|mapi)|r(?:c(?:hadmin|lient|ore)|events|helper|m(?:_p
+s|client|lib|s(?:can|hell|tormod)|trace)|puxnativesnapin|rstr|svc|um(
+?:api|svc)|v(?:cli|svc)|wmi|[hm])|s(?:core(?:ext)?|dp(?:api|srv)|pi(?
+:cli|srv)|shim|tpsvc)|t(?:artupscan|client|i_ci|o(?:bject|r(?:age(?:c
+ontexthandler|wmi(?:_passthru)?)|ewuauth|prop|svc))|r(?:eamci|m(?:dll
+|filt)|ucturedquery)|i)|u(?:bscriptionmgr|d)|v(?:cpack|svc)|wprv|x(?:
+proxy|s(?:hared|s(?:rv|tore))|s)|y(?:nc(?:center|eng|hostps|infrastru
+cture(?:ps)?|reg|ui)|s(?:class|fxui|inv|main|ntfy|prepmce|setup|tem(?
+:cpl|eventsbroker(?:client|server)))))\.dll|t(?:2embed|a(?:b(?:btn(?:
+ex)?|svc)|pi(?:32|lua|migplugin|perf|s(?:rv|ysprep)|ui|3)|sk(?:barcpl
+|comp|schd(?:ps)?))|bs(?:svc)?|cp(?:ipcfg|m(?:ib|on(?:ui)?))|dh|erm(?
+:mgr|srv)|h(?:awbrkr|eme(?:cpl|service|ui)|readpoolwinrt|umbcache)|im
+e(?:broker(?:client|server)|datemuicallback|synctask)|l(?:ntsvr|scs)p
+|pm(?:compc|tasks|vsc)|query|r(?:a(?:ffic|pi)|kwks)|s(?:appcmp|byuv|c
+(?:fgwmi|hannel)|ddd|errredir|gqec|mf|p(?:kg|nprdrcoinstaller|ubwmi)|
+srvlic|usb(?:gdcoinstaller|redirectiongrouppolicyextension)|workspace
+)|tls(?:auth|cfg)|vratings|w(?:ext|in(?:ap|u)i)|xf(?:log|w32)|zres)\.
+dll|u(?:bpm|cmhc|d(?:hisapi|wm)|exfat|fat|i(?:a(?:nimation|utomationc
+ore(?:res)?)|com|hub|r(?:eng|ibbon(?:res)?))|lib|m(?:andlg|dmxfrm|p(?
+:npmgr|o(?:ext|wmi)|o)|rdp|b)|n(?:attend|i(?:ime|mdmat|plat)|tfs)|pnp
+(?:host|ui)?|r(?:eg|lmon|l)|s(?:b(?:ceip|mon|perf|ui)|er(?:32|account
+controlsettings|cpl|env|initext|language(?:profilecallback|scpl))|p10
+|tprov)|tildll|udf|x(?:init|lib(?:res)?|sms|theme))\.dll|v(?:a(?:ult(
+?:c(?:li|redprovider)|roaming|svc)?|n)|b(?:ajet32|oxogl(?:arrayspu|cr
+util|errorspu|feedbackspu|pa(?:ck|ssthrough)spu)|script)|cdex|d(?:mdb
+g|s(?:_ps|bas|dyn|util|vd))|er(?:ifier|sion)|f(?:podbc|wwdm32)|ga(?:2
+56|64k)?|i(?:dreszr|rtdisk)|joy|m(?:applicationhealthmonitorproxy|bus
+(?:coinstaller|pipe|res)|dcoinstall|ic(?:res|timeprovider)|rdvcore|s(
+?:rvc|torfltres))|p(?:c\-s3|nike(?:api)?)|s(?:cmgrps|s(?:_ps|api|trac
+e))|wipxspx)\.dll|w(?:3(?:2t(?:ime|opl)|ssl)\.dll|a(?:bsyncprovider|v
+(?:dest|emsp))\.dll|b(?:emcomn|iosrvc)\.dll|c(?:m(?:api|csp|svc)|n(?:
+api|csvc|eap(?:auth|peer)proxy|netsh|wiz)|spluginservice)\.dll|d(?:fr
+es|i(?:asqmmodule|gest)|score|[ci])\.dll|e(?:b(?:c(?:amui|heck|lnt)|h
+its|io|s(?:ervices|ocket)|vw)|c(?:api|svc)|r(?:c(?:oncpl|plsupport)|d
+iagcontroller|svc|ui)|vt(?:api|fwd|svc)|r)\.dll|f(?:apigp|dprov|hc|sr
+)\.dll|h(?:ealog|helpe)r\.dll|i(?:a(?:aut|d(?:efui|ss)|rpc|s(?:c(?:an
+profiles|r)|ervc|hext)|trace|v(?:ideo|usd))\.dll|mgapi\.dll|n(?:32spl
+\.dll|b(?:io|rand)\.dll|credprovider\.dll|dows(?:\.(?:applicationmode
+l(?:\.(?:background\.(?:systemevents|time)broker|store(?:\.testingfra
+mework)?))?|devices\.(?:enumeration(?:\.ps)?|geolocation|p(?:ortable|
+rinters\.extensions)|sensors)|g(?:lobalization(?:\.fontgroups)?|raphi
+cs(?:\.printing)?)|help\.runtime|immersiveshell\.serviceprovider|medi
+a(?:\.(?:devices|mediacontrol|renewal|streaming(?:\.ps)?))?|networkin
+g(?:\.(?:backgroundtransfer|connectivity|networkoperators\.hotspotaut
+hentication|proximity|sockets\.pushenabledapplication))?|s(?:ecurity\
+.(?:authentication\.onlineid|credentials\.ui\.credentialpicker)|torag
+e\.(?:applicationdata|compression)|ystem\.(?:display|profile\.hardwar
+eid|remotedesktop))|ui(?:\.(?:i(?:mmersive|nput\.inking)|xaml))?|web)
+|codecs(?:ext)?|livelogin)\.dll|ethc\.dll|fax\.dll|http\.dll|i(?:n(?:
+et(?:\.dll)?|itext\.dll)|psec\.dll)|langdb\.dll|m(?:de|mbase|soirmpro
+tector|m)\.dll|n(?:si|tbbu)\.dll|opcirmprotector\.dll|r(?:nr|s(?:cmd|
+mgr|srv))\.dll|s(?:atapi|card|hfhc|ku|ockhc|r(?:pc|v)|t(?:rm|a)|ync(?
+:metastore|providers)?)\.dll|t(?:rust|ypes)\.dll|usb\.dll)|sp\.dll|tn
+esswmiv2provider\.dll)|ks(?:cli|p(?:brokerax|rtps)|svc)\.dll|l(?:an(?
+:api|c(?:fg|onn)|dlg|gpui|h(?:lp|c)|inst|ms?m|pref|radiomanager|s[ev]
+c|u(?:til|i))|dap32|gpclnt|id(?:c(?:li|redprov)|fdp|nsp|prov|res|svc)
+|notify|roamextension|s0wndh)\.dll|m(?:a(?:dmo[de]|lfxgfxdsp|sf)|code
+cdspps|d(?:m(?:log|ps)|rm(?:dev|net|sdk))|err(?:enu|or)|i(?:c(?:lnt|m
+iplugin)|d(?:com|x)|prop|scmgr|tomi)|netmgr|p(?:asf|c(?:ore|[dm])|d(?
+:ui|xm)|e(?:ffects|ncen)|hoto|loc|mde|ps|s(?:hell|rcwp)|ui)|s(?:dmo(?
+:e2|[de])|gapi|pdmo[de]|tream)|v(?:core|d(?:ecod|mo(?:e2|d)|spa)|enco
+d|s(?:de|en)cd|xencd)|[ip])\.dll|o(?:rkerdd|w(?:32|fax(?:ui)?))\.dll|
+p(?:c(?:ao|cpl|mig|svc|umi|websync)|d(?:_ci|busenum|s(?:h(?:ext|servi
+ceobj)|p)|wcn)|n(?:apps|core|inprc|prv|sruprov)|c)\.dll|s(?:2(?:_32|h
+elp)|c(?:api|i(?:nterop|svif)|lient|misetup|proxystub|svc)|d(?:api|ch
+ngr|mon|printproxy|scanproxy)|e(?:cedit|pno)|h(?:atm|bth|con|e(?:lper
+|xt)|i(?:p6|rda|sn)|netbs|qos|rm|tcpip)|m(?:a(?:gent|nmigrationplugin
+|uto)|plpxy|res|svc|wmipl)|nmp32|ock32|s(?:ervice|hared|ync)|tdecod)\
+.dll|tsapi32\.dll|u(?:a(?:ext|pi|u(?:eng1?|serv))|cltu[ix]|d(?:f(?:co
+installer|platform|svc|x)|river)|ps2?|s(?:ettingsprovider|hareduxreso
+urces)|webv?)\.dll|vc\.dll|wa(?:api|n(?:a(?:dvu|p)i|c(?:fg|onn)|hc|in
+st|mm|pr(?:ef|otdim)|radiomanager|svc)|pi)\.dll|zc(?:dlg|s(?:api|vc))
+\.dll)|x(?:a(?:ctsrv|udio2_8)|enroll|input(?:1_4|9_1_0)|ml(?:filter|l
+ite|provi?)|olehlp|p(?:ob2res|s(?:filt|gdiconverter|p(?:1res|2res|3re
+s|rint)|rasterservice|s(?:ervices|hhdr|vcs)))|w(?:izards|reg|tp(?:dui
+|w32)))\.dll|z(?:gmprxy|ipfldr)\.dll|\-)$}i ){
warn "adding ANYWAY -l ($full) ";
$dlls{$full}++;
}
} else {
warn "COULDN'T FIND IT SO ignoring -l ($relfile) "
+; ## Wx::Perl::Packager helps Wx
}
}
push @args, map {; "-l" => $_ } sort keys %dlls ;
}
push @args, '--output' => $self->{outfile}, '-c', $self->{infi
+le} ;;
::dd( \@args );
system @args;
print "try $$self{outfile} \nif it works without %PATH% chan
+ge it to gui with ( $EXE_UPDATE )\n";
return;
} ## end sub pack_exe
} ## end BEGIN
__END__