Defining private properties in Wix Installer

Viewed 864

First, let me define what I mean by saying private property. Normally, properties can be set using scripting such as follows:

<Property Id="CHECKREGISTRY">
      <RegistrySearch Id="CheckRegistryKey"
                      Root="HKLM"
                      Key="SOFTWARE\Foo"
                      Name="Bar"
                      Type="raw" />
</Property>
<Condition Message="You don't have the required permission to install this tool.">
   <![CDATA[Installed OR CHECKREGISTRY]]>
</Condition>

But the problem is that you can bypass this check by simply running a script like this:

msiexec.exe /i FooInstaller.msi /quiet CHECKREGISTRY="#1"

and that is against the very first idea that you should have the registry key to be able to do what you want to do.

As you see, a private property -- if exists -- would prevent this and allow being able to set only from within the MSI installer itself.

I was thinking to go to CustomAction route, but for a very simple thing, it is overly complicated. Is there any simple solution to this problem, or how can we define private properties in the first place?

2 Answers
Related