summaryrefslogtreecommitdiff
path: root/ACE/MPC/modules/WixProjectCreator.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/MPC/modules/WixProjectCreator.pm')
-rw-r--r--ACE/MPC/modules/WixProjectCreator.pm120
1 files changed, 120 insertions, 0 deletions
diff --git a/ACE/MPC/modules/WixProjectCreator.pm b/ACE/MPC/modules/WixProjectCreator.pm
new file mode 100644
index 00000000000..1b349e9711b
--- /dev/null
+++ b/ACE/MPC/modules/WixProjectCreator.pm
@@ -0,0 +1,120 @@
+package WixProjectCreator;
+
+# ************************************************************
+# Description : A Wix Project Creator
+# Author : James H. Hill
+# Create Date : 6/23/2009
+# ************************************************************
+
+# ************************************************************
+# Pragmas
+# ************************************************************
+
+use strict;
+use ProjectCreator;
+use WinProjectBase;
+use XMLProjectBase;
+use GUID;
+
+use vars qw(@ISA);
+@ISA = qw(XMLProjectBase WinProjectBase ProjectCreator);
+
+# ************************************************************
+# Subroutine Section
+# ************************************************************
+
+sub expand_variables_from_template_values {
+ return 1;
+}
+
+sub warn_useless_project {
+ return 0;
+}
+
+sub convert_slashes {
+ return 0;
+}
+
+sub fill_value {
+ my($self, $name) = @_;
+
+ if ($name eq 'guid') {
+ ## Return a repeatable GUID for use within the template. The values
+ ## provided will be hashed and returned in a format expected by Wix.
+ return GUID::generate($self->project_file_name(),
+ $self->{'current_input'}, $self->getcwd());
+ }
+ elsif ($name eq 'source_directory') {
+ my $source;
+
+ if ($self->get_assignment('sharedname')) {
+ $source = $self->get_assignment('dllout');
+
+ if ($source eq '') {
+ $source = $self->get_assignment('libout');
+ }
+ }
+ elsif ($self->get_assignment('staticname')) {
+ $source = $self->get_assignment('libout');
+ }
+ else {
+ $source = $self->get_assignment('exeout');
+ }
+
+ ## Check for a variable in the source directory. We have to make
+ ## sure we transform this correctly for WIX by adding the correct
+ ## prefix. Otherwise, WIX will complain.
+ if (defined $source && $source =~ /.*?\$\((.+?)\).*/) {
+ my $prefix;
+ my $varname = $1;
+
+ if ($ENV{$varname}) {
+ $prefix = "env";
+ }
+ else {
+ $prefix = "var";
+ }
+
+ ## Add the correct prefix to the variable.
+ $source =~ s/$varname/$prefix.$varname/g;
+ }
+
+ return $source;
+ }
+
+ return undef;
+}
+
+sub project_file_extension {
+ return '.wxi';
+}
+
+
+sub get_dll_exe_template_input_file {
+ #my $self = shift;
+ return 'wix';
+}
+
+
+sub get_lib_exe_template_input_file {
+ #my $self = shift;
+ return 'wix';
+}
+
+
+sub get_lib_template_input_file {
+ #my $self = shift;
+ return 'wix';
+}
+
+
+sub get_dll_template_input_file {
+ #my $self = shift;
+ return 'wix';
+}
+
+sub get_template {
+ return 'wix';
+}
+
+1;