summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/data/wixl/SampleMachine.wxs59
-rw-r--r--tests/wixl.at10
-rw-r--r--tools/wixl/builder.vala9
3 files changed, 74 insertions, 4 deletions
diff --git a/tests/data/wixl/SampleMachine.wxs b/tests/data/wixl/SampleMachine.wxs
new file mode 100644
index 0000000..491d0c2
--- /dev/null
+++ b/tests/data/wixl/SampleMachine.wxs
@@ -0,0 +1,59 @@
+<?xml version='1.0' encoding='windows-1252'?>
+<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
+
+ <?define VERSION="0.0.0.0"?>
+
+ <Product
+ Id="*"
+ Name="Sample App"
+ Language="1033"
+ Version="$(var.VERSION)"
+ Manufacturer="Example"
+ UpgradeCode="44a869b4-5dd4-44b0-938b-399f41611658"
+ >
+ <Package
+ Description="Sample App"
+ Manufacturer="Example"
+ InstallerVersion="200"
+ Compressed="yes"
+ InstallScope="perMachine"
+ />
+
+ <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
+ <MediaTemplate EmbedCab="yes" />
+
+ <Icon Id="Icon.exe" SourceFile="FoobarAppl10.exe" />
+ <Property Id="ARPPRODUCTICON" Value="Icon.exe" />
+ <Property Id="ARPHELPLINK" Value="http://www.example.com/" />
+
+ <Feature Id="ProductFeature" Title="SampleApp" Level="1">
+ <ComponentGroupRef Id="ProductComponents" />
+ </Feature>
+ </Product>
+
+ <Fragment>
+ <Directory Id="TARGETDIR" Name="SourceDir">
+ <Directory Id="LocalAppDataFolder">
+ <Directory Id="INSTALLFOLDER" Name="SampleApp" />
+ </Directory>
+ </Directory>
+ </Fragment>
+
+ <Fragment>
+ <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
+ <Component Id="ProductComponent" Guid="262eca3a-9ab0-4706-ab39-55c89819506a">
+
+ <RegistryKey Root="HKCU" Key="Software\Example\SampleApp">
+ <RegistryValue Name="Version" Value="[ProductVersion]" Type="string" KeyPath="yes" />
+ </RegistryKey>
+
+ <CreateFolder />
+ <RemoveFolder Id="RemoveAppRootDirectory" On="uninstall" />
+
+ <File Id="SampleApp.exe" Source="FoobarAppl10.exe"/>
+
+ </Component>
+ </ComponentGroup>
+ </Fragment>
+
+</Wix>
diff --git a/tests/wixl.at b/tests/wixl.at
index 378ddbf..f3c160d 100644
--- a/tests/wixl.at
+++ b/tests/wixl.at
@@ -4,6 +4,9 @@ AT_BANNER([wixl])
m4_define([AT_CHECK_WIXL], [
AT_CHECK([_wixl ]$@)])
+m4_define([AT_CHECK_MSIINFO], [
+AT_CHECK([_msiinfo ]$@)])
+
# AT_WIXLDATA - copy data file from source tree
m4_define([AT_WIXLDATA], [AT_MSIDATA([wixl/$1], [m4_default([$2], [$1])])])
@@ -36,6 +39,13 @@ AT_CHECK_WIXL([-o out.msi SampleUser.wxs], [0], [ignore], [ignore])
AT_CHECK([test -f out.msi], [0])
AT_CLEANUP
+AT_SETUP([SampleMachine])
+AT_WIXLDATA([SampleMachine.wxs])
+AT_WIXLDATA([FoobarAppl10.exe])
+AT_CHECK_WIXL([-o out.msi SampleMachine.wxs], [0], [ignore], [ignore])
+AT_CHECK_MSIINFO([export out.msi Property | grep -q 'ALLUSERS 1'], [0])
+AT_CLEANUP
+
AT_SETUP([Stable component GUIDs])
AT_WIXLDATA([ComponentGUID.wxs])
AT_WIXLDATA([FoobarAppl10.exe])
diff --git a/tools/wixl/builder.vala b/tools/wixl/builder.vala
index 9a6e738..695a758 100644
--- a/tools/wixl/builder.vala
+++ b/tools/wixl/builder.vala
@@ -327,12 +327,13 @@ namespace Wixl {
int source = SourceFlags.COMPRESSED;
if (package.InstallScope != null) {
- if (package.InstallScope == "perUser")
+ if (package.InstallScope == "perUser") {
source |= SourceFlags.NO_PRIVILEGES;
- else if (package.InstallScope == "perMachine")
- source |= 0;
- else
+ } else if (package.InstallScope == "perMachine") {
+ db.table_property.add ("ALLUSERS", "1");
+ } else {
error ("invalid InstallScope value: %s", package.InstallScope);
+ }
}
db.info.set_property (Libmsi.Property.SOURCE, source);
}