亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

卸載WiX時刪除文件

卸載WiX時刪除文件

溫溫醬 2019-08-27 16:09:55
卸載WiX時刪除文件卸載我的應用程序時,我想配置Wix設置以刪除原始安裝后添加的所有文件??雌饋硇遁d程序只刪除了最初從MSI文件安裝的目錄和文件,并且它保留了稍后在應用程序文件夾中添加的所有其他內容。換句話說,我想在卸載時清除目錄。我怎么做?
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

使用RemoveFile元素和On =“ uninstall ”。這是一個例子:

<Directory Id="CommonAppDataFolder" Name="CommonAppDataFolder">
  <Directory Id="MyAppFolder" Name="My">
    <Component Id="MyAppFolder" Guid="*">
      <CreateFolder />
      <RemoveFile Id="PurgeAppFolder" Name="*.*" On="uninstall" />
    </Component>
  </Directory></Directory>

更新

它不起作用100%。它刪除了文件,但沒有刪除任何其他目錄 - 安裝后創建的目錄。有什么想法嗎? - pribeiro

遺憾的是,Windows Installer不支持使用子目錄刪除目錄。在這種情況下,您必須采取自定義操作?;蛘撸绻雷游募A是什么,請創建一堆RemoveFolder和RemoveFile元素。


查看完整回答
反對 回復 2019-08-27
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

RemoveFolderEx在WiX中使用Util擴展中的元素。
使用此方法,還會刪除所有子目錄(而不是直接使用RemoveFile元素)。此元素在MSI數據庫中添加臨時行RemoveFileRemoveFolder表。

查看完整回答
反對 回復 2019-08-27
?
HUH函數

TA貢獻1836條經驗 獲得超4個贊

為此,我只是創建了一個在卸載時調用的自定義操作。

WiX代碼如下所示:

<Binary Id="InstallUtil" src="InstallUtilLib.dll" /><CustomAction Id="DIRCA_TARGETDIR" Return="check" Execute="firstSequence" Property="TARGETDIR" Value="[ProgramFilesFolder][Manufacturer]\[ProductName]" /><CustomAction Id="Uninstall" BinaryKey="InstallUtil" DllEntry="ManagedInstall" Execute="deferred" /><CustomAction Id="UninstallSetProp" Property="Uninstall" Value="/installtype=notransaction /action=uninstall /LogFile= /targetDir=&quot;[TARGETDIR]\Bin&quot; &quot;[#InstallerCustomActionsDLL]&quot; &quot;[#InstallerCustomActionsDLLCONFIG]&quot;" /><Directory Id="BinFolder" Name="Bin" >
    <Component Id="InstallerCustomActions" Guid="*">
        <File Id="InstallerCustomActionsDLL" Name="SetupCA.dll" LongName="InstallerCustomActions.dll" src="InstallerCustomActions.dll" Vital="yes" KeyPath="yes" DiskId="1" Compressed="no" />
        <File Id="InstallerCustomActionsDLLCONFIG" Name="SetupCA.con" LongName="InstallerCustomActions.dll.Config" src="InstallerCustomActions.dll.Config" Vital="yes" DiskId="1" />
    </Component></Directory><Feature Id="Complete" Level="1" ConfigurableDirectory="TARGETDIR">
    <ComponentRef Id="InstallerCustomActions" /></Feature><InstallExecuteSequence>
    <Custom Action="UninstallSetProp" After="MsiUnpublishAssemblies">$InstallerCustomActions=2</Custom>
    <Custom Action="Uninstall" After="UninstallSetProp">$InstallerCustomActions=2</Custom></InstallExecuteSequence>

InstallerCustomActions.DLL中的OnBeforeUninstall方法的代碼如下所示(在VB中)。

Protected Overrides Sub OnBeforeUninstall(ByVal savedState As System.Collections.IDictionary)
    MyBase.OnBeforeUninstall(savedState)

    Try
        Dim CommonAppData As String = Me.Context.Parameters("CommonAppData")
        If CommonAppData.StartsWith("\") And Not CommonAppData.StartsWith("\\") Then
            CommonAppData = "\" + CommonAppData        End If
        Dim targetDir As String = Me.Context.Parameters("targetDir")
        If targetDir.StartsWith("\") And Not targetDir.StartsWith("\\") Then
            targetDir = "\" + targetDir        End If

        DeleteFile("<filename.extension>", targetDir) 'delete from bin directory
        DeleteDirectory("*.*", "<DirectoryName>") 'delete any extra directories created by program
    Catch
    End TryEnd SubPrivate Sub DeleteFile(ByVal searchPattern As String, ByVal deleteDir As String)
    Try
        For Each fileName As String In Directory.GetFiles(deleteDir, searchPattern)
            File.Delete(fileName)
        Next
    Catch
    End TryEnd SubPrivate Sub DeleteDirectory(ByVal searchPattern As String, ByVal deleteDir As String)
    Try
        For Each dirName As String In Directory.GetDirectories(deleteDir, searchPattern)
            Directory.Delete(dirName)
        Next
    Catch
    End TryEnd Sub


查看完整回答
反對 回復 2019-08-27
  • 3 回答
  • 0 關注
  • 1174 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號