mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-05-13 09:34:48 +03:00
* fix(msi): check install folder, remove files when uninstall Signed-off-by: fufesou <linlong1266@gmail.com> * fix(msi): harden install folder normalization cleanup Signed-off-by: fufesou <linlong1266@gmail.com> * fix(msi): better file attributes Signed-off-by: fufesou <linlong1266@gmail.com> * fix(mis): Simple refactor Signed-off-by: fufesou <linlong1266@gmail.com> * fix(msi): avoid path-based attribute changes in cleanup Signed-off-by: fufesou <linlong1266@gmail.com> * fix(msi): custom action, unset flag read before del Signed-off-by: fufesou <linlong1266@gmail.com> --------- Signed-off-by: fufesou <linlong1266@gmail.com>
46 lines
3.5 KiB
XML
46 lines
3.5 KiB
XML
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
|
|
xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
|
|
<?include ../Includes.wxi?>
|
|
|
|
<Fragment>
|
|
<!-- For compatibility with command line values from previous versions -->
|
|
<Property Id="INSTALLFOLDER" Secure="yes">
|
|
<RegistrySearch Id="InstallFolderSearch" Root="HKCR" Key="$(var.RegKeyRoot)" Name="INSTALLFOLDER" Type="raw" />
|
|
</Property>
|
|
|
|
<!-- If a property value has been passed via the command line (which includes when set from the bundle), the registry search will
|
|
overwrite the command line value, these actions temporarily store the command line value before the registry search
|
|
is performed so they can be restored after the registry search is complete -->
|
|
<SetProperty Id="SavedInstallFolderCmdLineValue" Value="[INSTALLFOLDER]" Before="AppSearch" Sequence="first" Condition="INSTALLFOLDER" />
|
|
|
|
<!-- If a command line value was stored, restore it after the registry search has been performed -->
|
|
<SetProperty Action="RestoreSavedInstallFolderValue" Id="INSTALLFOLDER" Value="[SavedInstallFolderCmdLineValue]" After="AppSearch" Sequence="first" Condition="SavedInstallFolderCmdLineValue" />
|
|
|
|
<!-- Normalize INSTALLFOLDER from the command line or registry before assigning INSTALLFOLDER_INNER. -->
|
|
<!-- Case 1: already ends with \$(var.Product)\, keep it unchanged. -->
|
|
<SetProperty Action="SetInstallFolderInnerFromProductDir" Id="INSTALLFOLDER_INNER" Value="[INSTALLFOLDER]" After="RestoreSavedInstallFolderValue" Sequence="first" Condition="INSTALLFOLDER AND INSTALLFOLDER ~>> "\$(var.Product)\"" />
|
|
<!-- Case 2: already ends with \$(var.Product) but has no trailing slash, add the slash. -->
|
|
<SetProperty Action="SetInstallFolderInnerFromProductDirNoSlash" Id="INSTALLFOLDER_INNER" Value="[INSTALLFOLDER]\" After="RestoreSavedInstallFolderValue" Sequence="first" Condition="INSTALLFOLDER AND INSTALLFOLDER ~>> "\$(var.Product)"" />
|
|
<!-- Case 3: ends with a slash but not \$(var.Product)\, append $(var.Product)\. -->
|
|
<SetProperty Action="SetInstallFolderInnerAppendProduct" Id="INSTALLFOLDER_INNER" Value="[INSTALLFOLDER]$(var.Product)\" After="RestoreSavedInstallFolderValue" Sequence="first" Condition="INSTALLFOLDER AND INSTALLFOLDER ~>> "\" AND NOT (INSTALLFOLDER ~>> "\$(var.Product)\" OR INSTALLFOLDER ~>> "\$(var.Product)")" />
|
|
<!-- Case 4: has no trailing slash and does not end with \$(var.Product), append \$(var.Product)\. -->
|
|
<SetProperty Action="SetInstallFolderInnerAppendSlashProduct" Id="INSTALLFOLDER_INNER" Value="[INSTALLFOLDER]\$(var.Product)\" After="RestoreSavedInstallFolderValue" Sequence="first" Condition="INSTALLFOLDER AND NOT INSTALLFOLDER ~>> "\" AND NOT (INSTALLFOLDER ~>> "\$(var.Product)\" OR INSTALLFOLDER ~>> "\$(var.Product)")" />
|
|
|
|
<!-- INSTALLFOLDER_INNER is defined for compatibility with previous versions of the installer. -->
|
|
<!-- Because we need to use INSTALLFOLDER as the command line argument. -->
|
|
<StandardDirectory Id="ProgramFiles6432Folder">
|
|
<Directory Id="INSTALLFOLDER_INNER" Name="$(var.Product)" />
|
|
</StandardDirectory>
|
|
|
|
<StandardDirectory Id="CommonAppDataFolder">
|
|
<Directory Id="App.Data.Folder" Name="$(var.Product)" />
|
|
</StandardDirectory>
|
|
|
|
<StandardDirectory Id="ProgramMenuFolder">
|
|
<Directory Id="App.StartMenu" Name="$(var.Product)" />
|
|
</StandardDirectory>
|
|
|
|
<StandardDirectory Id="DesktopFolder" />
|
|
</Fragment>
|
|
</Wix>
|