[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