Windows Installer是Windows提供的安装服务,基于MSI文件的创建和安装。在实践中,将有一个工具用于生成MSI文件,您应该使用Windows Installer和该工具(WiX,Visual Studio安装项目,InstallShield,高级安装程序等)标记您的问题。您的问题可能在于构建,设计或安装MSI文件。
WiX/MSI:将标准输出重定向到文件,键入 50 自定义操作
我有一个 WiX 安装程序,全部配置为运行 SqlPackage.exe,以将一些已安装的 .dacpac 打包的 SQL 应用程序部署到数据库。实际上按如下方式部署数据库文件就会成功: ...
如何在不使用 MSIX 的情况下部署 .NET Maui 应用程序
更新:我使用 WiX 工具集来构建安装程序至少已有 10 年了。现在,我尝试将毛伊岛应用程序添加到安装程序中,但是... MSIX 仅为当前用户安装 - 我...
首先,感谢您的出色工作。我一生都无法弄清楚为什么我无法在 WixSharp 中编译单个自定义操作。这是一个非常精简的代码示例,...
我正在使用wix工具集v4构建一个使用内置对话框WixUI_InstallDir的MSI。 当我双击 MSI 安装程序来卸载该程序时,它确实打开了“维护”对话框...
有任何描述InstallShield .ism 文件格式的文档吗? InstallShield .ism 文件可以保存为二进制格式或 XML 格式。我对 XML 格式感兴趣。 什么...
我目前正在关注 mongodb 的 msiexec 文档,但在文档中找不到安装位置。命令如下所示 msiexec.exe /l*v mdbinstall.log /qb /i mong...
到目前为止,我们一直在 VS 中使用 VS 安装程序项目来生成 .MSI 安装程序,这种方法的主要问题是必须处理 .vdproj 文件,这些文件很难合并每个 ti...
如何制作具有自定义 UI 的 Windows 安装程序包?我见过这些构建器,例如 Advanced Installer 和 InnoSetup,但这些似乎有些常见。这些安装向导怎么样
我阅读了高级安装程序 6.5.1 的一些帮助,但找不到除手动之外的更改版本字符串的方法。
我有一个程序,用于创建其他程序并从 *.cs 源文件编译它 使用 System.CodeDom.Compiler; 我想创建一个安装程序...
在我的wix中我使用以下声明: 在我的 wix 中,我使用以下声明: <ComponentGroup Id="BinComponents" Directory="BIN"> <Component Id="BinComponent" Guid="23D229D0-06EE-49f4-80B4-6D7136500721"> <File Id="MyProjectOutput" Name="MyProject.exe" Source="MyProject\bin\MyProject.exe"/> <ServiceControl Id="RemoveService" Stop="both" Remove="both" Name="MyProject.exe" Wait="yes" /> <!-- Stop running MyProject instances --> </Component> </ComponentGroup> 我的重现: 首先,我像往常一样运行安装。安装后,我启动我的网络应用程序。 .exe 像往常一样出现在任务管理器中: 我想在修复、更新或卸载时结束此 .exe。所以我再次启动我的 .msi 并选择修复: 现在我的问题:按“修复”后,由于声明的ServiceControl,我预计会出现以下对话框: 但事实并非如此。相反,会出现以下对话框: 当我记录设置时,日志显示以下行: MSI (s) (A8:DC) [10:16:28:227]: Executing op: ActionStart(Name=StopServices,Description=Stopping services,Template=Service: [1]) Action 10:16:28: StopServices. Stopping services MSI (s) (A8:DC) [10:16:28:228]: Executing op: ProgressTotal(Total=1,Type=1,ByteEquivalent=1300000) MSI (s) (A8:DC) [10:16:28:228]: Executing op: ServiceControl(,Name=MyProject.exe,Action=2,Wait=1,) MSI (s) (A8:DC) [10:16:28:228]: Executing op: ActionStart(Name=DeleteServices,Description=Deleting services,Template=Service: [1]) Action 10:16:28: DeleteServices. Deleting services MSI (s) (A8:DC) [10:16:28:228]: Executing op: ProgressTotal(Total=1,Type=1,ByteEquivalent=1300000) MSI (s) (A8:DC) [10:16:28:229]: Executing op: ServiceControl(,Name=MyProject.exe,Action=8,Wait=1,) MSI (s) (A8:DC) [10:16:28:229]: Executing op: ActionStart(Name=InstallFiles,Description=Copying new files,Template=File: [1], Directory: [9], Size: [6]) [...] MSI (s) (7C:28) [09:06:21:950]: RESTART MANAGER: Did detect that a critical application holds file[s] in use, so a reboot will be necessary. MSI (s) (7C:28) [09:06:21:950]: Note: 1: 1610 MSI (s) (7C:28) [09:06:21:950]: Note: 1: 2205 2: 3: Error MSI (s) (7C:28) [09:06:21:950]: Note: 1: 2228 2: 3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1610 在修复旁边,我还尝试了更新,结果相同。 也许缺少任何声明? 注意:当我在任务管理器中关闭 MyApp.exe 时,不会出现该消息,因此问题肯定是 MyApp.exe 造成的。 您看到的警告对话框来自“InstallValidate”标准操作。 我过去也遇到过类似的问题。对于相同的服务 id,我通过使用单个服务控制元素而不是多个服务控制元素来修复它。 就我而言,同一个服务 ID 有多个服务控制元素。 这是根据链接 http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Upgrade-uninstall-restart-issue-td7586315.html 这对我有用。许多用户报告了相同的行为,尽管没有正式记录。 具有单个服务控制元素会使重新启动管理器记录服务控制表中的条目,并将阻止重新启动管理器在 RMFilesInUse 对话框中列出该服务,或者将阻止重新启动管理器 避免抛出警告消息,通知用户可能需要重新启动。 这是另外一个链接 无法使用 WiX 启动 Windows 服务 我的实验表明,服务控制元素的数量和重新启动管理器之间存在明确的联系 http://microsoft.public.windows.msi.narkive.com/OOuQQAsw/controlling-restart-manager-behaviour 另一个选项是使用属性 RESTARTMANAGERCONTROL 完全禁用重新启动管理器,如果您禁用 RestartManager,系统可能会提示您重新启动(您可能想测试一次),并且旧版“正在使用的文件”机制将启动。禁用重新启动管理器是相关 msi 开发人员的明智决定,有时是必要的。 我不确定您的服务控制表是什么样子。只是想与您分享我的经验。 希望有帮助。 问候, 基兰·赫格德 您应该将整个日志发布到某处。根本原因是修复不应该经常需要替换文件。因此,如果您确实安装了产品,运行了 exe,然后需要修复来替换文件,那么问题不在于文件使用对话框 - 而是安装的产品已损坏,因此所需的文件或注册表项已被删除。已删除。应用程序事件日志应包含描述丢失组件的 MsiInstaller 条目。因此,首先看看根本原因。 修复后,修复需要替换文件的情况应该很少见,因此可能不值得担心。但您可以考虑将您的应用程序与重新启动管理器集成或使用 WiX util CloseApplication。 进入cdrive 打开程序文件 检查顶部菜单中的视图选项可用 然后有一个名为 MONGODb 的文件 删除它 再次安装现在就可以安装了。
我有以下问题: 我有一个自定义的延迟操作,它应该运行 powershell 命令,但它无法解析 SetProperty 元素的 value 属性中给出的属性。 我...
InstallShield InstallScript-MSI 与 InstallScript-非 MSI
我有由InstallShield (IS) 2016 创建的myproject.ism 和setup.rul 文件。我如何判断生成的安装程序是InstallScript-MSI 风格还是InstallScript-non-MSI 风格? 我有
Windows Forms 4.8 对话框模式可在 Visual Studio 2022 IDE 中使用,但通过 MSI 安装后无法使用
TL;博士 BindingSource.CurrentChanged 事件在 IDE 调试期间似乎可以正常触发,但在最终安装的“发布”编译的应用程序中则不然 - 其他事件处理程序似乎按预期运行。 果阿...
为 AWS Key Management Service (KMS) 生成证书签名请求 (CSR) 以用于 Entrust 证书领取
我正在使用 Entrust 为 C# .Net 项目生成代码签名证书。 Entrust 要求我们使用 Amazon KMS 或 CloudHSM 安全地存储证书和私钥,但我无法...
我正在尝试通过 Visual Studio 2015 安装程序创建安装程序文件。 当我将 的主要输出添加到应用程序文件夹中时,它指向 obj 文件夹中的文件而不是 bin fol...
为 .NET WPF 应用程序创建 Windows 安装程序
我已经在.NET8.0上创建了一个Wpf应用程序,现在我想用它创建一个Windows安装程序。 我希望 Windows 安装程序成为一个独立的应用程序,而无需安装 .NET
我正在使用 wix 为我的 x64 应用程序编写安装程序。所以 wxs 看起来像这样: 我正在使用 wix 为我的 x64 应用程序编写安装程序。所以 wxs 看起来像这样: <Package Id="*" Platform="x64" ... 我正在和 candle 一起跑步 -arch x64。但是,我需要编写一个注册表项来与Software\WOW6432Node\MyCompany\MyKey下的32位应用程序进行通信,所以我有一个像这样的组件: <Component Id="SomeId" Guid="SomeGUID"> <RegistryKey Root="HKLM" Key="Software\WOW6432Node\MyCompany\MyKey"> ... 安装似乎一切正常。但是,当我卸载时,注册表项不会被删除。我怀疑这不是在 Software\WOW6432Node 下添加注册表项的正确方法。我在 SO 和 Google 上的搜索还没有产生任何结果。有什么建议吗?谢谢。 WiXRegistryKey 元素文档: https://wixtoolset.org/documentation/manual/v3/xsd/wix/registrykey.html 描述 用于组织子RegistryValue元素或创建注册表项(并可选择在卸载期间将其删除)。 ForceDeleteOnUninstall YesNoType 将此属性设置为“yes”,以便在卸载父组件时删除该键及其所有值和子键。请注意,仅当您的程序在此项下创建其他值或子项并且您希望卸载以删除它们时,此值才有用。 MSI 已经删除了它创建的所有值和子项,因此此选项只会增加卸载的额外开销。默认为“否”。 要考虑的另一件事是,只有在移除组件时才会发生这种情况。 记录卸载将为您提供有关正在发生的情况的更多信息。 Wixtoolset中的简单代码 <RemoveRegistryKey Root="HKCU" Action="removeOnUninstall" Key="Software\Broadsoft\DesktopAlertingClient" />
我已经使用电子锻造(maker/wix)创建了包。 我可以使用 Electron Forge 配置生成 msi 包。但我面临 1 个问题。 安装后我正在安装...
我想使用官方程序以编程方式在 Windows 中安装 Edge MSI Edge 安装程序(151 MB),但避免使用管理员权限,并将提取的文件放在自定义文件夹中(n...