我正在开发一个使用WIX来安装应用程序的项目。其中一项要求是在安装当前版本之前删除旧版本。旧版本不是基于MSI,它是使用SetupApi(依赖于inf文件)创建的。我想这可以通过自定义操作来实现,逻辑如下:在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%NAME%中查找“旧”版本,如果可能的话提取UninstallString值如果设置了该值,运行将执行该命令的自定义操作,通常它是一个字符串,如RunDll32advpack.dll,LaunchINFSectionC:\PROGRA~1\PROGRAM\file.i
我有一个安装为MSI包的应用程序,我有下一个版本的应用程序,我计划通过特殊程序以静默模式安装。当应用程序运行时,我发现一个问题:并非所有应用程序组件都已安装立即,其中一些只有在重新启动后才会真正准备就绪。我得到了不稳定的应用程序。我可以检查-应用程序是否正在运行并等待它关闭,但我无法检查用户在静默安装期间单击快捷方式时的情况。我该如何避免这种情况?我可以在安装过程中锁定应用程序吗? 最佳答案 我建议实现RestartManager支持。Vista或更高版本将尝试通过重启管理器关闭您的应用程序,您可以决定如何在您的应用程序中处理它(提
我做了一个web应用程序升级,它完美地升级了应用程序以及注册表和IIS条目。但在注册表升级后,它正在替换以前的版本(也在IIS中)。但在“程序和功能”部分,它显示了两个应用程序版本。这里发生了什么?我缺少什么? 最佳答案 也许注册表项只是被覆盖了。请检查升级是否成功。安装日志会清除它。 关于windows-升级后如何删除以前的应用程序?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question
我正在使用WiX工具集v3.7和VisualStudio2013为Excel插件创建安装程序包。该插件依赖于.NETFramework4.5,我希望安装程序能够自动检测目标机器上是否存在所需的框架,如果不存在,则安装它。谷歌搜索让我来到这个页面:http://wix.sourceforge.net/manual-wix3/install_dotnet.htm,但该页面上有关如何创建bundle的说明链接已损坏。我已尝试将元素添加到我的根元素,但最终出现错误。我还尝试了一些我在网上找到的示例,但它们似乎都无法与在VS2013中创建项目期间为我生成的默认WiXlist一起正常工作。我需要在
我如何将字符串本地化为在msi安装期间显示的不同语言(韩语、日语),例如:准备安装(下图),使用wix。任何帮助表示赞赏。提前致谢。 最佳答案 你不能。这条消息来自Windows安装程序服务本身,它对所有安装都是一样的,你无法更改它,它始终使用操作系统语言。 关于windows-使用wix本地化默认msi字符串,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/31475887/
我的.wxs文件中有以下XML,用于在卸载时运行批处理文件:InstalledANDNOTUPGRADINGPRODUCTCODE和所以它应该运行位于安装目录中的批处理文件。我的批处理文件如下所示:schtasks/Create/F/SCONCE/ST22:05/TNexampleUninstall/TR"echohello"2>batch_log.log当我运行卸载程序时,我在batch_log.log中得到以下信息:ERROR:NomappingbetweenaccountnamesandsecurityIDswasdone.(40,4):UserId:似乎只有在创建新的计划任务时
MSI软件包卸载失败导致进一步安装尝试在MSI日志中返回错误2908(msiexec返回1603)的问题出现在很多不同的论坛中,所以我只想给出我的解决方案,因为我们已经出现了多年来,我时不时地看到它的程序化解决方案。一般原因是MSI卸载程序在SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components下的LOCALMACHINE配置单元的注册表中创建了“孤立键”典型的MSIEXEC日志错误如下所示:MSI(s)(2C:0C)[14:52:21:490]:注意:1:14012:UNKNOW
我们在Wix中有一个安装脚本,其中包含片段、组件和一些自定义操作:但是,自定义操作之一SetEnvironmentVariable需要在设置用户后在文件底部的片段中运行。而这不会发生。SetEnvironmentVariable失败,因为找不到用户。InstallExecuteSequence中给出的序列在InstallFiles发生后开始。我试图找到一个更合适的位置来开始序列,使用给定的列表here。我试过PublishProduct,结果是一样的。有没有办法在自定义操作运行之前添加用户? 最佳答案 @zett42的建议很好。但是
我创建了一个托管的CustomAction以将*.MSI中未包含的2个文件复制到安装目录。虽然这在WindowsXP中有效,但在Windows7中失败。虽然日志显示文件已复制到所需位置,C:\ProgramFiles\MyApp\,但实际上它们被复制到C:\Users\MyUser\AppData\Local\VirtualStore\ProgramFiles(x86)\MyApp\。我的猜测是,这与修改程序文件夹的访问权限有关。这就是我在WiX中调用自定义操作的方式:CustomAction本身只是调用File.Copy()。安装程序复制的其他文件在Windows7中运行良好。只有那
我的安装程序必须将一个值附加到现有的多字符串注册表项(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\NotificationPackages):问题是,在卸载时,它会删除整个key:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA即。LSA下的所有值都被删除,有什么方法可以删除我附加的值(仅p1)并保留现有值? 最佳答案 WiX的文档元素说(强调我的):createAndRemoveOnUninstallC