WiX 自定义操作与 DTF...很困惑

2023-12-26

好吧,我决定用 WiX 做我想做的事情的唯一方法(感谢我没有写的旧安装程序,我现在必须升级)是使用一些自定义操作。

基本上,我需要在删除现有产品之前备份文件,并在删除现有产品之后再次恢复该文件。我认为这就是所谓的“类型 2 自定义操作”。

我认为我理解的顺序,但是,我不理解的首先是如何将数据传递到我的 C# 操作(文件位于 WiX 中的目录)以及如何引用我的 C#(DTF?)操作Binary 和 CustomAction 标签。

另外,所有这些都需要在标签中吗?所有的例子都表明了这一点。

这是我迄今为止在 .WXS 文件中的内容......

<Binary Id="backupSettingsAction.dll" 
            SourceFile="backupSettingsAction.CA.dll"/>
    <CustomAction
              Id="BackupSettingsAction"
              BinaryKey="backupSettingsAction.dll"
              DllEntry="CustomAction" 
              Execute="immediate" />

    <InstallExecuteSequence>
        <Custom Action="backupSettingsAction.dll" Before="InstallInitialize"/>
        <RemoveExistingProducts After="InstallFinalize" />
        <Custom Action="restoreSettingsAction.dll" After="RemoveExistingFiles"/>
    </InstallExecuteSequence>

我需要备份的文件是以前安装的设置文件(需要保持完整),它位于目录中:

<Directory Id="CommonAppDataFolder" Name="CommonAppData">
            <Directory Id="CommonAppDataPathways" Name="Pathways" />
        </Directory>

甚至还有一个组件标签,尽管我需要备份已经存在的文件:

<Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes" >
    <File Id="settingsXml" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />
</Component>

这是引用 Visual Studio (2005) 为我创建的 C# 文件:

namespace backupSettingsAction
{
    public class CustomActions
    {
        [CustomAction]
        public static ActionResult CustomAction1(Session session)
        {
            session.Log("backing up settings file");

            //do I hardcode the directory and name of the file in here, or can I pass them in?

            return ActionResult.Success;
        }
    }
}

任何帮助是极大的赞赏。谢谢你!


我们可以回到为什么您认为您需要自定义操作吗?

根据您要解决的问题,您应该能够执行以下两件事之一

1)将XML文件放入其自己的组件中,标记为密钥文件并设置为永久。

2) 创建一个虚拟 DLL 并为其指定版本 1.0.0.0。以后切勿增加此 DLL 的版本号。将 DLL 和 XML 文件放入组件中,并将 DLL 设置为密钥文件,并将组件设置为永久。

您现在应该能够进行重大升级并保留 XML 文件的内容,无论它是否已被修改为包含用户数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WiX 自定义操作与 DTF...很困惑 的相关文章

  • 为什么 msiexec TARGETDIR 似乎不起作用

    I tried msiexec i yarn 1 10 1 msi TARGETDIR C programs qb 软件已安装 但未安装到 TARGETDIR 中 我错过了什么 您可以尝试以下命令行 msiexec exe i yarn 1
  • Wix:如何警告用户而不是使用属性终止安装?

    我正在 x64 计算机上搜索 Microsoft Access 数据库引擎的注册表项 这是我的代码
  • Wix引导程序

    我使用 WPF 编写了一个托管 wix 引导程序 实际的安装步骤需要链接多个 msi exe 和批处理文件
  • msiexec 返回负数

    安装 MSI 时 我从 msiexec 收到奇怪的返回代码 即 2147021886 我想我记得在某处读到这是某种格式或编码问题 但我找不到参考 我还发现一个微软页面谈论 PS2 o 存在负返回码问题 但这种情况发生在 PS5 0 中 神奇
  • Wix 自定义操作仅在安装期间执行,但不在升级和删除时执行?

    我有一个自定义操作 该操作只能在安装期间执行 而不能在次要版本升级和删除期间执行 我尝试了不同的条件 但 CA 正在次要版本期间执行 1 未安装 或不 删除 全部 并升级产品代码 2 未安装 3 未安装 或未 已安装并删除 全部 并升级产品
  • 如何使用 wix 将多个元素添加到 XML 配置文件中?

    我正在尝试使用 Wix 编辑 XML 文件 我正在使用与 Wix 3 7 捆绑在一起的 WixUtilExtension xml 文件是在 Visual Studio 2010 中为 C 应用程序创建的设置文件 在此文件中 我使用一个用于在
  • 使用WiX安装后是否可以提示重启机器?

    使用WiX安装后是否可以提示重启机器
  • 在 Managed Burn BootstrapperApplication 中包含映像

    我正在使用 Burn 和自定义引导程序应用程序使用 wix 开发安装程序 一切正常 但我无法将简单的图像包含到我的应用程序 UI 中 我将图像包含到我的用户界面中 如下所示
  • 为什么卸载时我的服务没有被删除? (维克斯)

    即使重新启动后 即使可执行文件消失 服务仍然存在 我使用的是 WIX 版本 3 0 5419 0
  • ClickOnce 有哪些替代方案? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我用过单击一次 https en wikipedia org wiki ClickOnce多年来 我经历
  • 如何在 Wix 自定义对话框的文本框中输入值?

    我有一个带有类型编辑控件的 Wix 对话框 这是服务所依赖的服务器的 uri 如何在输入值之前禁用 下一步 按钮 以下是我们曾经使用的一些 旧 生产代码的摘录
  • WiX 无法正确渲染图像

    我正在尝试编写一个自定义 WiX 对话框 作为其工作流程的一部分 它会根据某些条件显示错误图像 然而 WiX 似乎忽略了我的尺寸并按其感觉合适的方式显示 这是我的代码
  • 在 WiX Bundle 中包含 .NET 安装程序未检测是否已安装

    我使用的是 WiX 3 7 无法让简单的 捆绑元素正常工作 因为它不会带来 Net FX 安装程序包 也不会将其嵌入到 setup exe 中 我已经在我的程序中为此创建了自己的包Bundle wxs文件 但我仍然遇到麻烦 即使机器已经安装
  • 从对话框调用 CustomAction 时出现 WiX 安装错误 2762

    我是初学者 开始学习WiX 我想在安装过程中捕获 验证和注册用户详细信息 我创建了一个对话框来捕获用户注册并在用户单击 下一步 后调用自定义操作 但在这里我收到安装程序错误 2762 虽然错误描述说 必须在 InstallInitializ
  • WiX Burn:从注册表读取 LaunchTarget

    我是 WiX 的新手 我试图让我的 Bootstrapper 在完成后启动我安装的应用程序 为了实现这一点 我正在使用
  • WIX MSI 软件包卸载

    我正在使用 WIX 作为安装程序包 当我通过双击原始 msi 包卸载该包时 一切都很好 当我从控制面板卸载时 它会给我一个最小的用户界面卸载 我已在 MSI 中写入一个自定义操作 询问用户是否要卸载某些数据库等 最小 UI 卸载时不会发生这
  • 在wix中添加文件夹到安装程序而不是文件?

    我的安装程序必须将文件复制到 installdir 我的应用程序有大约 2000 个文件 我不可能编写脚本将每个文件添加到安装程序中 wix中是否有任何选项可以让我一次添加所有文件或包含文件的整个文件夹 我是 wix 新手 我在任何教程中都
  • WiX - 通过检查修订来防止降级

    我正在寻找一种方法来防止我的应用程序降级 但 问题 是 我必须检查修订号 例如 安装 1 0 0 1 时应该可以安装 1 0 0 2 但安装 1 0 0 2 时不应该安装 1 0 0 1 我知道 Element MajorUpgrade 仅
  • 用于配置编辑的 wix 自定义对话框

    你好 我正在尝试使用 wix v3 为我的应用程序设置 msi 我对这项任务有疑问 我需要一个用户输入 该输入将存储在我的应用程序的配置文件中 例如 我需要一个用于 sql 连接字符串的对话框 并且用户输入将写入应用程序配置文件中 我尝试用
  • 如何在 WIX 中引用用户的主目录

    我正在为 SDK 创建一个安装程序 其中包括由最终用户编译的源代码 我希望我的 Wix 安装程序默认将其放入用户的主目录中 但我找不到要使用的正确属性名称 您还可以参考HOMEPATH环境变量与 HOMEPATH 有关用于属性的语法的更多详

随机推荐