[wix-users] Changing install directory doesn't work, always installs to default path

Steve Ogilvie sogilvie at msn.com
Fri Oct 16 08:12:04 PDT 2015


I need another set of eyes to look at this… I am puzzled as to why this isn’t working…
My default path for the product is to C:\inetpub\MYCO_MYPROD
Which is set up using a directory property:
<Property Id="DIRECTORY_PATH_SERVER" Secure="yes">      <RegistrySearch Id="Search_DIRECTORY_PATH_SERVER"                      Key="SOFTWARE\MYCORP\MYAPP"                      Name="InstallPath"                      Root="HKLM"                      Type="raw"                      Win64="no"/>    </Property>
I have added using InstallDirDlg (modified so the description fits on two lines since it was writing overtop of our top banner bitmap)<!-- Set up the UI for the installer -->    <Property Id="WIXUI_INSTALLDIR" Secure="yes" Value="DIRECTORY_PATH_SERVER" />    <UI Id="WixUI_InstallDir">      ...
      <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />      <Property Id="WixUI_Mode" Value="InstallDir" />
      <DialogRef Id="MYCORP_InstallDirDlg"/>      <DialogRef Id="BrowseDlg" />      <DialogRef Id="DiskCostDlg" />      <DialogRef Id="ErrorDlg" />      <DialogRef Id="FatalError" />      <DialogRef Id="FilesInUse" />      <DialogRef Id="MsiRMFilesInUse" />      <DialogRef Id="PrepareDlg" />      <DialogRef Id="ProgressDlg" />      <DialogRef Id="ResumeDlg" />      <DialogRef Id="UserExit" />
      <Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish>      <Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>      <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>      <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>     ...
      <Publish Dialog="MYCORP_InstallDirDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">NOT Installed AND MSI_RUN_FROM_EXE = "0"</Publish>      <Publish Dialog="MYCORP_InstallDirDlg" Control="Back" Event="NewDialog" Value="MYCORP_WelcomeDlg">NOT Installed AND MSI_RUN_FROM_EXE = "1"</Publish>      <Publish Dialog="MYCORP_InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>      <Publish Dialog="MYCORP_InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>      <Publish Dialog="MYCORP_InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>      <Publish Dialog="MYCORP_InstallDirDlg" Control="Next" Event="NewDialog" Value="MYCORP_IISWebSiteInfoDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>      <Publish Dialog="MYCORP_InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>      <Publish Dialog="MYCORP_InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>      ...
    </UI>
    <UIRef Id="WixUI_Common" />
Directory structure is:<Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="DIRECTORY_PATH_PROGRAMDATA" DiskId="1">        <!-- Change directory permissions on ProgramData\MYCORP\MYAPP -->        <Component Id="cmp_ProgramDataPermServ" Guid="{B579230B-…}" Permanent="no" Shared="no">          <CreateFolder>            <util:PermissionEx User="[WIX_ACCOUNT_USERS]" GenericWrite="yes" GenericRead="yes" />          </CreateFolder>        </Component>              </Directory>
      <Directory Id="DIRECTORY_PATH_SERVER" DiskId="1">        <Component Id="Cmp_RemoveDPSDir" Guid="{5620D7C1-…}">          <RemoveFolder Id="RemoveDPSFolder" Directory="DIRECTORY_PATH_SERVER" On="uninstall" />        </Component>        ...	Rest of components are below this with subfolders etc…
Custom action to set up the folders:<CustomAction Id="CA_Set_DIRECTORY_PATH_PROGRAMDATA" Directory="DIRECTORY_PATH_PROGRAMDATA" Value="[CommonAppDataFolder]\MYCORP\MYAPP"/><CustomAction Id="CA_Set_Directory_INETPUB_PATH" BinaryKey="BIN_CustomAction" DllEntry="GetInetpubPath" Impersonate="yes" Execute="immediate" Return="check" /><CustomAction Id="CA_Set_DIRECTORY_PATH_SERVER" Directory="DIRECTORY_PATH_SERVER" Value="[INETPUB_PATH]\MYCORP_MYAPP"/>
<InstallExecuteSequence>      <ResolveSource Before="CostFinalize"><![CDATA[Not Installed And Not PATCH]]></ResolveSource>      <Custom Action="SetMspReinstall" After="FindRelatedProducts">Installed</Custom>      <RemoveExistingProducts Overridable="yes" After="InstallInitialize"/>      <Custom Action="CA_Set_DIRECTORY_PATH_PROGRAMDATA" After="CostFinalize">NOT Installed</Custom>      <Custom Action="CA_Set_Directory_INETPUB_PATH" After="CA_Set_DIRECTORY_PATH_PROGRAMDATA">NOT Installed</Custom>      <Custom Action="CA_Set_DIRECTORY_PATH_SERVER" After="CA_Set_Directory_INETPUB_PATH">NOT Installed</Custom>      ...<InstallUISequence>      <Custom Action="CA_Set_DIRECTORY_PATH_PROGRAMDATA" After="CostFinalize">NOT Installed</Custom>      <Custom Action="CA_Set_Directory_INETPUB_PATH" After="CA_Set_DIRECTORY_PATH_PROGRAMDATA">NOT Installed</Custom>      <Custom Action="CA_Set_DIRECTORY_PATH_SERVER" After="CA_Set_Directory_INETPUB_PATH">NOT Installed</Custom>      ...
When the InstallDirDlg pops up I change the path from inetpub to program files… and on the verify ready to install the path is the path I have changed to… but when installed everything has been installed to the “default path” and not the new path…
Any idea what I have messed up?
Thanks,
Steve 		 	   		  


More information about the wix-users mailing list