我想修改MSI安装程序(通过WiX创建)以在卸载时删除整个目录.
我理解WiX中的选项RemoveFile和RemoveFolder选项,但是它们不够强大,无法递归删除安装后创建内容的整个文件夹.
我注意到类似的Stack Overflow问题在卸载WiX时删除文件,但我想知道是否可以通过调用批处理脚本删除文件夹来更简单地完成此操作.
这是我第一次使用WiX,而且我仍然掌握了自定义操作.在卸载时运行批处理脚本的自定义操作的基本示例是什么?
我讨厌问这个问题,因为我知道已经有很多问题了,有些问题与我想做的非常接近:
第一个似乎表明没有外部软件是不可能的,但是第二个问题给出的答案似乎正是我想要的。但是我真的不明白建议设置时它指的是什么REBOOT=Force。
我通读了有关属性的链接文章,但我不知道这是否只是MSDN的编写方式,但我不认为应该在设置项目中使用它们是更明智的选择。我对C#和特别是Setup Project还是很陌生。
在属性之外,使用最少的外部依存关系似乎要做的下一件最简单的事情是创建一个小的C#应用程序,该程序除了关闭系统外什么也不做。然后将“自定义操作”添加到“提交”部分以调用此应用程序。在我看来,这似乎是一个矫kill过正,是否意味着无用的应用程序必须作为安装的一部分并留在用户计算机上?
我发现了很多有关使用WIX或Orca的东西,但是我有不使用它们的原因(至少因为我必须为使用的任何软件编写业务案例)。我什至没有尝试创建一个非常复杂的安装程序,只是复制了一些新的EXE,然后重新启动以确保在启动时使用了新的EXE。尽管我现在认为重新启动的麻烦可能不值得,仅将新exe称为自定义操作即可。
我正在安装软件的所有新版本作为主要升级,因为安装非常小,而且大多数情况下,所有文件都会更改。
如果完成了与全新安装相比的升级,我想跳过安装程序中的一个对话框,但是到目前为止,在以下示例中,我仍无法弄清要使用什么条件(例如“ Installed AND PATCH”)。
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog"
Value="WelcomeDlg" Order="2">Installed AND PATCH</Publish>
Run Code Online (Sandbox Code Playgroud) 当有文件的更新补丁必须用现有文件替换时,如果其中一个文件正在被任何进程使用,则会弹出一个正在使用的文件对话框。我想避免那个对话框并使该文件排队等待安装,以便在系统重新启动时安装它。我已经读到在重新启动时排队更新文件是 Windows 安装程序的内置功能。有人可以建议我删除那个 FileInUse 对话框的方法。我尝试将“MsiRMFilesInUse”属性设置为“0”,但没有奏效。