Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows Installer使用旧名称创建文件夹,但这些文件夹的GUID与安装的旧版本相同_Windows_Wix_Windows Installer - Fatal编程技术网

Windows Installer使用旧名称创建文件夹,但这些文件夹的GUID与安装的旧版本相同

Windows Installer使用旧名称创建文件夹,但这些文件夹的GUID与安装的旧版本相同,windows,wix,windows-installer,Windows,Wix,Windows Installer,我们有一个用WIX构建的windows安装程序。它安装在某个服务器上 我们更改了一个文件夹的名称,但相应组件的GUID相同。然后我们卸载并安装。文件夹是用旧名称创建的。我试图在windows注册表中找到解决方案,但失败了 应在系统上进行哪些清理以删除旧安装程序的痕迹?请确保更改组件的GUID,安装此文件夹是一种解决方法,但应该可以在不更改代码的情况下进行。更改名称需要更改组件GUID。任何其他操作都违反了组件规则。简单解决方案:更改的安装路径需要更改组件GUID,因为-所以一起更改,或者导致混淆

我们有一个用WIX构建的windows安装程序。它安装在某个服务器上

我们更改了一个文件夹的名称,但相应组件的GUID相同。然后我们卸载并安装。文件夹是用旧名称创建的。我试图在windows注册表中找到解决方案,但失败了


应在系统上进行哪些清理以删除旧安装程序的痕迹?请确保更改组件的GUID,安装此文件夹是一种解决方法,但应该可以在不更改代码的情况下进行。更改名称需要更改组件GUID。任何其他操作都违反了组件规则。

简单解决方案:更改的安装路径需要更改组件GUID,因为-所以一起更改,或者导致混淆。技术细节如下

如果更改组件GUID不是一个选项(应该是),您应该能够通过在
installExecuteSeSequence
的早期计划
RemoveExistingProducts
(避免MSI文件设计问题和组件引用错误引起的问题的一般方法)来“修复”当前问题。或者更确切地说,您将避免看到的问题,实际的根本原因可能仍然存在,只是避免了

我想目录表中也可能存在导致这种情况的问题(在使用WiX时不太可能)


解释:MSI组件化需要了解的核心问题是绝对路径是引用计数的,而不是文件本身:换句话说:
如果文件移动,组件GUID不会跟随文件

MSI的总体概念是在组件GUID(唯一标识符)和绝对路径(安装位置/密钥路径)之间存在1:1映射。完整路径,包括文件名(如果有)

因此,重命名文件夹意味着您应该为针对该文件夹的所有组件生成新的GUID(因为绝对路径已更改)。有点难以理解和合理化,但这就是设计


以automagic方式处理文件夹重命名和重新定位等更改(推荐阅读)。基于安装文件夹(绝对路径).

更改前后的一些WXS代码可能会有所帮助。您是否使用了
installExecuteSeSequence
中提前安排的
RemoveExistingProducts
的主要升级?我接受了更详细的答案,但我认为您的答案是有类似问题的人想要的:)