[wix-users] Sub-Folders not updating install location correctly

Aaron Brookes aaron at jayhawksoftware.com
Wed Sep 30 12:45:19 PDT 2015


I am having trouble getting my installation to work correctly.  In my
installation, the user needs to select 3 paths, the Program Installation
folder, the Local data folder, and the Server data folder.  The Local and
Server data folders can be shared, or separate folders depending on the
user.  I have got the install to allow to select all three folders, and the
properties are getting updated, but for some reason, it is not updating the
sub-folders of my Server data folder.  However, both the Program install and
the Local data folders are updating correctly, and I am totally stumped as
to what is happening.  If anyone can help I would sincerely appreciate it.

 

I am including copies of the WXS files as well as the relevant portion of
the log file to help to try to determine what the problem is.  

 

I am assuming that the user is performing a full UI install, at the present
point in time.  I may allow for Minimal UI and Administrative installs
later, but I need to get it working with the Full UI currently.  I removed
all GUIDs from the files and inserted "YOUR_GUID_HERE" instead.  I also
anonymized the folder names.  I have attached the section of the install log
showing where the local data folder path was updated, but the server data
sub-folders were not, at the end of the message.

 

WIX_UICustom:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <Fragment>

    <UIRef Id="WixUI_Common" />

 

    <UI Id="WixUI_Custom">

      <TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />

      <TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />

      <TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes"
/>

 

      <Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />

 

      <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="ExitDialog" Control="Finish" Event="EndDialog"
Value="Return" Order="999">1</Publish>

 

      <Publish Dialog="WelcomeDlg" Control="Next"
Property="_InstallDirBrowserProperty" Value="PROGRAMFOLDER"
Order="1">1</Publish>

      <Publish Dialog="WelcomeDlg" Control="Next"
Property="_LocalJSDDirBrowserProperty" Value="DATAFOLDER"
Order="1">1</Publish>

      <Publish Dialog="WelcomeDlg" Control="Next"
Property="_ServerJSDDirBrowserProperty" Value="SERVERDATAFOLDER"
Order="1">1</Publish>

      <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog"
Value="MyInstallDirDlg" Order="2">NOT Installed AND NOT PATCH</Publish>

      <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog"
Value="VerifyReadyDlg" Order="2">Installed AND PATCH</Publish>

 

      <Publish Dialog="MyInstallDirDlg" Control="Back" Event="NewDialog"
Value="WelcomeDlg">1</Publish>

      <Publish Dialog="MyInstallDirDlg" Control="Next" Event="NewDialog"
Value="VerifyReadyDlg">1</Publish>

 

      <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog"
Value="MyInstallDirDlg" Order="1">WixUI_InstallMode =
"InstallComplete"</Publish>

      <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog"
Value="MaintenanceTypeDlg" Order="2">WixUI_InstallMode = "Repair" OR
WixUI_InstallMode = "Remove"</Publish>

      <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog"
Value="WelcomeDlg" Order="1">WixUI_InstallMode = "Update"</Publish>

 

      <Publish Dialog="MaintenanceWelcomeDlg" Control="Next"
Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>

 

      <Publish Dialog="MaintenanceTypeDlg" Control="RepairButton"
Event="NewDialog" Value="VerifyReadyDlg">1</Publish>

      <Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton"
Event="NewDialog" Value="VerifyReadyDlg">1</Publish>

      <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog"
Value="MaintenanceWelcomeDlg">1</Publish>      

    </UI>

  </Fragment>

</Wix>

 

The relevant portion of my Directories.wxs:

<?xml version="1.0" encoding="UTF-8"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

  <Fragment>

    <Directory Id="TARGETDIR" Name="SourceDir">

      <Directory Id="DATAFOLDER" Name="My_Data">

        <Component Id="DataFolderComponent" Guid="YOUR_GUID_HERE"
KeyPath="yes" NeverOverwrite="no" Permanent="no" Transitive="no" Win64="no"
Location="either">

          <CreateFolder/>

        </Component>

        <Component Id="DataFolderRegistry" Guid="YOUR_GUID_HERE">

          <RegistryValue Root="HKLM" Key="SOFTWARE\My Software"
Name="Data_Location" Action="write" Type="string" Value="[DATAFOLDER]"/>

        </Component>

        <Directory Id="LOGSFOLDER" Name="Logs">

          <Component Id="LogsFolderComponent" Guid="YOUR_GUID_HERE"
SharedDllRefCount="no" KeyPath="yes" NeverOverwrite="no" Permanent="no"
Transitive="no" Win64="no" Location="either">

            <CreateFolder/>

          </Component>

        </Directory>

      </Directory>

 

      <Directory Id="SERVERDATAFOLDER" Name="My_Data">

        <Component Id="ServerDataFolderRegistry" Guid="YOUR_GUID_HERE">

          <RegistryValue Root="HKLM" Key="SOFTWARE\My Software"
Name="Server_Data_Location" KeyPath="yes" Action="write" Type="string"
Value="[SERVERDATAFOLDER]" />

        </Component>

 

        <Directory Id="SERVERUPDATESFOLDER" Name="Updates">

          <Directory Id="AUTOLAUNCHERUPDATEFOLDER" Name="Auto Launcher">

            <Component Id="ALUpdateFolder" Guid="YOUR_GUID_HERE"
KeyPath="yes" NeverOverwrite="no" Permanent="no" Transitive="no" Win64="no"
Location="either">

              <CreateFolder />

            </Component>

          </Directory>

          <Directory Id="AUTOUPDATERUPDATEFOLDER" Name="Auto Updater">

            <Component Id="AUUpdateFolder" Guid="YOUR_GUID_HERE"
KeyPath="yes" NeverOverwrite="no" Permanent="no" Transitive="no" Win64="no"
Location="either">

              <CreateFolder />

            </Component>

          </Directory>

          <Directory Id="AUTODOWNLOADERUPDATEFOLDER" Name="Auto Downloader">

            <Component Id="ADUpdateFolder" Guid="YOUR_GUID_HERE"
KeyPath="yes" NeverOverwrite="no" Permanent="no" Transitive="no" Win64="no"
Location="either">

              <CreateFolder />

            </Component>

          </Directory>

        </Directory>

      </Directory>

 

      <Directory Id="ProgramFilesFolder">

        <Directory Id="PROGRAMFOLDER" Name="My Program Software">

          <Component Id="MyFolder" Guid=" YOUR_GUID_HERE "
SharedDllRefCount="no" KeyPath="yes" NeverOverwrite="no" Permanent="no"
Transitive="no" Win64="no" Location="either">

            <CreateFolder />

          </Component>

          <Component Id="MyFolderRegistry" Guid=" YOUR_GUID_HERE ">

            <RegistryValue Root="HKLM" Key="SOFTWARE\My Software"
Name="Program_Location" Action="write" Type="string"
Value="[PROGRAMFOLDER]"/>

          </Component>

 

          <Directory Id="AUTOLAUNCHERFOLDER" Name="Jayhawk Auto Launcher">

            <Directory Id="AUTOLAUNCHERICONSFOLDER" Name="Icons"/>

          </Directory>

 

          <Directory Id="AUTOUPDATERFOLDER" Name="Auto Updater" />

 

          <Directory Id="AUTODOWNLOADERFOLDER" Name="Auto Downloader" />

        </Directory>

      </Directory>

. . . . . 

    </Directory>

  </Fragment>

</Wix>

 

MyInstallDirDlg.wxs:

<?xml version="1.0" encoding="utf-8"?>

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

<Fragment>

<UI>

<Dialog Id="MyInstallDirDlg" Width="370" Height="270"
Title="!(loc.MyInstallDirDlg_Title)" TrackDiskSpace="yes">

                                <Control Id="Back" Type="PushButton" X="192"
Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" />

                                <Control Id="Next" Type="PushButton" X="248"
Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">

                                                                <Subscribe
Event="SelectionNoItems" Attribute="Enabled" />

                                </Control>

                                <Control Id="Cancel" Type="PushButton"
X="304" Y="243" Width="56" Height="17" Cancel="yes"
Text="!(loc.WixUICancel)">

                                                                <Publish
Event="SpawnDialog" Value="CancelDlg">1</Publish>

                                </Control>

                                <Control Id="BannerBitmap" Type="Bitmap"
X="0" Y="0" Width="370" Height="44" TabSkip="no"
Text="!(loc.MyInstallDirDlgBannerBitmap)" />

                                <Control Id="BannerLine" Type="Line" X="0"
Y="44" Width="370" Height="0" />

                                <Control Id="BottomLine" Type="Line" X="0"
Y="234" Width="370" Height="2" />

                                <Control Id="Description" Type="Text" X="25"
Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes"
Text="!(loc.MyInstallDirDlgDescription)" />

                                <Control Id="Title" Type="Text" X="15" Y="6"
Width="210" Height="15" Transparent="yes" NoPrefix="yes"
Text="!(loc.MyInstallDirDlgTitle)" />

                                

                <Control Id="InstallLocationLabel" Type="Text" X="10" Y="50"
Width="345" Height="10" Text="!(loc.MyInstallDirDlgInstallLocationLabel)">

                                <Condition
Action="hide">Installed</Condition>

                </Control>

                <Control Id="InstallLocation" Type="PathEdit" X="10" Y="67"
Width="281" Height="20" Property="_InstallDirBrowserProperty"
Indirect="yes">

                                <Condition
Action="hide">Installed</Condition>

                </Control>

                <Control Id="InstallBrowse" Type="PushButton" X="296" Y="69"
Width="66" Height="17" Text="!(loc.MyInstallDirDlgBrowse)">

                                <Publish Property="_BrowseProperty"
Value="[_InstallDirBrowserProperty]" Order="1">1</Publish>

                                <Publish Event="SpawnDialog"
Value="BrowseDlg" Order="2">1</Publish>

                                <Publish Event="SetTargetPath"
Value="[_BrowseProperty]" Order="3">1</Publish>

                                <Condition
Action="hide">Installed</Condition>

                                <Condition
Action="disable">Installed</Condition>

                </Control>

 

                <Control Type="Line" Id="LineDivider1" Width="370"
Height="2" X="0" Y="108" />

 

                <Control Id="LocalJSDLocationLabel" Type="Text" X="10"
Y="114" Width="345" Height="10"
Text="!(loc.MyInstallDirDlgLocalJSDLocationLabel)">

                                <Condition
Action="hide">Installed</Condition>

                </Control>

                <Control Id="LocalJSDLocation" Type="PathEdit" X="10"
Y="131" Width="281" Height="20" Property="_LocalJSDDirBrowserProperty"
Indirect="yes">

                                <Condition
Action="hide">Installed</Condition>

                </Control>

                <Control Id="LocalJSDBrowse" Type="PushButton" X="296"
Y="133" Width="66" Height="17" Text="!(loc.MyInstallDirDlgBrowse)">

                                <Publish Property="_BrowseProperty"
Value="[_LocalJSDDirBrowserProperty]" Order="1">1</Publish>

                                <Publish Event="SpawnDialog"
Value="BrowseDlg" Order="2">1</Publish>

                                <Publish Event="SetTargetPath"
Value="[_BrowseProperty]" Order="3">1</Publish>

                                <Condition
Action="hide">Installed</Condition>

                                <Condition
Action="disable">Installed</Condition>

                </Control>

                

                <Control Type="Line" Id="LineDivider2" Width="370"
Height="2" X="0" Y="172" />

 

                <Control Id="ServerJSDLocationLabel" Type="Text" X="10"
Y="178" Width="345" Height="10"
Text="!(loc.MyInstallDirDlgServerJSDLocationLabel)">

                                <Condition
Action="hide">Installed</Condition>

                </Control>

                <Control Id="ServerJSDLocation" Type="PathEdit" X="10"
Y="195" Width="281" Height="20" Property="_ServerJSDDirBrowserProperty"
Indirect="yes">

                                <Condition
Action="hide">Installed</Condition>

                </Control>                

                <Control Id="ServerJSDBrowse" Type="PushButton" X="296"
Y="197" Width="66" Height="17" Text="!(loc.MyInstallDirDlgBrowse)">

                                <Publish Property="_BrowseProperty"
Value="[_ServerJSDDirBrowserProperty]" Order="1">1</Publish>

                                <Publish Event="SpawnDialog"
Value="BrowseDlg" Order="2">1</Publish>

                                <Publish Event="SetTargetPath"
Value="[_BrowseProperty]" Order="3">1</Publish>

                                <Condition
Action="hide">Installed</Condition>

                                <Condition
Action="disable">Installed</Condition>

                </Control>

</Dialog>

</UI>

</Fragment>

</Wix>

 

 

 

Install Log:

(UNKNOWN)     Action 11:06:51: WelcomeDlg. 

(UNKNOWN)     Action start 11:06:51: WelcomeDlg. 

(UNKNOWN)     Action 11:06:51: WelcomeDlg. Dialog created 

(CLIENT)     MSI (c) (58:14) [11:06:51:374]: Note: 1: 2205 2: 3:
_RemoveFilePath 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: PROPERTY CHANGE: Modifying
CostingComplete property. Its current value is '0'. Its new value: '1'. 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3: BindImage 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3: ProgId 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3:
PublishComponent 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3: SelfReg 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3: Extension 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3: Font 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3: Class 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3: Icon 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2205 2: 3: TypeLib 

(CLIENT)     MSI (c) (58:14) [11:06:51:389]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:06:53:749]: PROPERTY CHANGE: Adding
_InstallDirBrowserProperty property. Its value is 'PROGRAMFOLDER'. 

(CLIENT)     MSI (c) (58:70) [11:06:53:749]: PROPERTY CHANGE: Adding
_LocalJSDDirBrowserProperty property. Its value is 'DATAFOLDER'. 

(CLIENT)     MSI (c) (58:70) [11:06:53:749]: PROPERTY CHANGE: Adding
_ServerJSDDirBrowserProperty property. Its value is 'SERVERDATAFOLDER'. 

(CLIENT)     MSI (c) (58:70) [11:06:53:749]: Note: 1: 2205 2: 3: Error 

(CLIENT)     MSI (c) (58:70) [11:06:53:749]: Note: 1: 2228 2: 3: Error 4:
SELECT `Message` FROM `Error` WHERE `Error` = 2898 

(UNKNOWN)     Info 2898.For WixUI_Font_Title textstyle, the system created a
'Tahoma' font, in 0 character set, of 14 pixels height. 

(UNKNOWN)     Action 11:06:53: MyInstallDirDlg. Dialog created 

(CLIENT)     MSI (c) (58:70) [11:06:54:249]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:06:54:749]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:06:55:249]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:06:55:749]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:06:56:264]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:06:56:764]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:06:57:030]: PROPERTY CHANGE: Adding
_BrowseProperty property. Its value is 'DATAFOLDER'. 

(CLIENT)     MSI (c) (58:70) [11:06:57:046]: Note: 1: 1402 2:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explore
r 3: 2 

(UNKNOWN)     Action 11:06:57: BrowseDlg. Dialog created 

(CLIENT)     MSI (c) (58:70) [11:07:01:249]: PROPERTY CHANGE: Modifying
DATAFOLDER property. Its current value is 'c:\My_Data\'. Its new value:
'c:\My_Data2\'. 

(CLIENT)     MSI (c) (58:70) [11:07:01:327]: PROPERTY CHANGE: Modifying
LOGSFOLDER property. Its current value is 'c:\My_Data\Logs\'. Its new value:
'c:\My_Data2\Logs\'. 

(CLIENT)     MSI (c) (58:70) [11:07:01:327]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:01:811]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:02:311]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:02:811]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:03:311]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:03:811]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:04:311]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:04:811]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:05:249]: PROPERTY CHANGE: Modifying
SERVERDATAFOLDER property. Its current value is 'c:\My_Server_Data\'. Its
new value: 'c:\My_Server_Data3\'. 

(CLIENT)     MSI (c) (58:70) [11:07:05:311]: Note: 1: 2727 2: 

(UNKNOWN)     Action 11:07:05: VerifyReadyDlg. Dialog created 

(CLIENT)     MSI (c) (58:70) [11:07:05:842]: Note: 1: 2727 2: 

(CLIENT)     MSI (c) (58:70) [11:07:06:342]: Note: 1: 2727 2: 

(UNKNOWN)     Action ended 11:07:06: WelcomeDlg. Return value 1. 

(CLIENT)     MSI (c) (58:A4) [11:07:06:342]: Doing action: ProgressDlg 

(CLIENT)     MSI (c) (58:A4) [11:07:06:342]: Note: 1: 2205 2: 3: ActionText 

(UNKNOWN)     Action 11:07:06: ProgressDlg. 

(UNKNOWN)     Action start 11:07:06: ProgressDlg. 

(UNKNOWN)     Action 11:07:06: ProgressDlg. Dialog created 

(UNKNOWN)     Action ended 11:07:06: ProgressDlg. Return value 1. 

(CLIENT)     MSI (c) (58:A4) [11:07:06:358]: Doing action: ExecuteAction 

(CLIENT)     MSI (c) (58:A4) [11:07:06:358]: Note: 1: 2205 2: 3: ActionText 

(UNKNOWN)     Action 11:07:06: ExecuteAction. 

(UNKNOWN)     Action start 11:07:06: ExecuteAction. 

(CLIENT)     MSI (c) (58:A4) [11:07:06:358]: PROPERTY CHANGE: Adding
SECONDSEQUENCE property. Its value is '1'. 

(CLIENT)     MSI (c) (58:A4) [11:07:06:405]: Grabbed execution mutex. 

(CLIENT)     MSI (c) (58:A4) [11:07:06:405]: Incrementing counter to disable
shutdown. Counter after increment: 0 

(CLIENT)     MSI (c) (58:A4) [11:07:06:405]: Switching to server:
PROGRAMFOLDER="c:\Program Files (x86)\My Program Software\"
DATAFOLDER="c:\My_Data2\" LOGSFOLDER="c:\My_Data2\Logs\"
SERVERDATAFOLDER="c:\My_Data3\"
AUTOLAUNCHERUPDATEFOLDER="c:\My_Data\Updates\Auto Launcher\"
AUTOUPDATERUPDATEFOLDER="c:\My_Data\Updates\Auto Updater\"
AUTODOWNLOADERUPDATEFOLDER="c:\My_Data\Updates\Auto Downloader\"
AUTOLAUNCHERFOLDER="c:\Program Files (x86)\My Program Software\Auto
Launcher\" AUTOLAUNCHERICONSFOLDER="C:\Program Files (x86)\My Program
Software\Auto Launcher\Icons\" AUTOUPDATERFOLDER="C:\Program Files (x86)\My
Program Software\Auto Updater\" AUTODOWNLOADERFOLDER="C:\Program Files
(x86)\My Program Software\Auto Downloader\" TARGETDIR="c:\"
SERVERUPDATESFOLDER="c:\My_Data\Updates\"
CURRENTDIRECTORY="C:\Windows\system32" CLIENTUILEVEL="0"
CLIENTPROCESSID="3416" USERNAME="TestUser" SOURCE



More information about the wix-users mailing list