如何最好地在 WiX 中定义自定义操作?

2024-02-02

我有一个WiX http://en.wikipedia.org/wiki/WiX安装程序和一个自定义操作(加上撤消和回滚),它使用安装程序的属性。自定义操作必须在所有文件都位于硬盘上之后发生。为此,您似乎需要 WXS 文件中的 16 个条目;根内有八个,如下所示:

<CustomAction Id="SetForRollbackDo" Execute="immediate" Property="RollbackDo" Value="[MYPROP]"/>
<CustomAction Id="RollbackDo" Execute="rollback" BinaryKey="MyDLL" DllEntry="UndoThing" Return="ignore"/>
<CustomAction Id="SetForDo" Execute="immediate" Property="Do" Value="[MYPROP]"/>
<CustomAction Id="Do" Execute="deferred" BinaryKey="MyDLL" DllEntry="DoThing" Return="check"/>
<CustomAction Id="SetForRollbackUndo" Execute="immediate" Property="RollbackUndo" Value="[MYPROP]"/>
<CustomAction Id="RollbackUndo" Execute="rollback" BinaryKey="MyDLL" DllEntry="DoThing" Return="ignore"/>
<CustomAction Id="SetForUndo" Execute="immediate" Property="Undo" Value="[MYPROP]"/>
<CustomAction Id="Undo" Execute="deferred" BinaryKey="MyDLL" DllEntry="UndoThing" Return="check"/>

还有八个之内InstallExecuteSequence,像这样:

<Custom Action="SetForRollbackDo" After="InstallFiles">REMOVE&lt;>"ALL"</Custom>
<Custom Action="RollbackDo" After="SetForRollbackDo">REMOVE&lt;>"ALL"</Custom>
<Custom Action="SetForDo" After="RollbackDo">REMOVE&lt;>"ALL"</Custom>
<Custom Action="Do" After="SetForDo">REMOVE&lt;>"ALL"</Custom>
<Custom Action="SetForRollbackUndo" After="InstallInitialize">REMOVE="ALL"</Custom>
<Custom Action="RollbackUndo" After="SetForRollbackUndo">REMOVE="ALL"</Custom>
<Custom Action="SetForUndo" After="RollbackUndo">REMOVE="ALL"</Custom>
<Custom Action="Undo" After="SetForUndo">REMOVE="ALL"</Custom>

有没有更好的办法?


WiX 自定义操作是一个值得遵循的很好的模型。在这种情况下,您只需声明CustomAction、立即操作、延迟操作和回滚操作。您只需安排,与Custom,立即操作,其中立即操作作为本机 DLL 中的代码实现。

然后,在立即行动的code,你打电话给MsiDoAction安排回滚和推迟的操作:由于它们被推迟,因此它们会在您调用时写入脚本中MsiDoAction而不是立即执行。你需要打电话MsiSetProperty以及设置自定义操作数据。

下载 WiX 源代码并研究如何IISExtension例如,作品。 WiX 操作通常解析自定义表并根据该表生成延迟操作属性的数据。

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

如何最好地在 WiX 中定义自定义操作? 的相关文章

  • Bower 安装 self_signed_cert_in_chain

    我正在 Windows 中使用 git bash 构建一个角度应用程序 到目前为止 我已经能够使用 yo 搭建脚手架 没有问题 但是当我尝试发出以下命令时 有人可以指出我来解决这个问题吗 Bower 安装 Angular Bootstrap
  • 在启动设置而不是结束时提取文件

    我正在使用最新版本的 inno 它在安装过程中执行以下操作 执行依赖性检查以查看安装的内容 安装尚未安装的依赖项 net sql server directx 等 从 Files 部分安装应用程序和文件 wpReady 检查 SQL Ser
  • 如何从网站的 .NET 安装程序中排除文件夹?

    我们的网站有一个安装程序 效果很好 我在创建安装程序时排除了 web config 和其他一些文件 但是我似乎无法排除文件夹 这可能吗 我已使用 NET 内置 Web 安装项目创建了安装程序 该项目可在新项目对话框中的 Visual Stu
  • ISEXP:警告:-6248:找不到依赖文件 libc.dll,或其组件的依赖项之一

    这个问题有很多变体 但我的问题是特定的libc dll 我不关心解决依赖性 我想要一种解决方法来避免该警告 我的表格申请中有 30 个项目 当我使用 InstallshieldLE 发布设置时 我得到ISEXP warning 6248 C
  • Eclipse 安装程序内部错误:注册表目录不可用

    我曾经像平常一样使用 Oomph Eclipse 安装程序 直到我更改了注册表中的用户配置文件 以删除烦人的空格 从那时起 除了 eclipse 安装程序之外 我没有遇到任何问题 它不断尝试在旧用户文件夹中查找注册表目录 该文件夹已不存在
  • 导入 SciPy 或 scikit-image,“from scipy.linalg import _fblas:导入错误:DLL 失败”

    我正在导入 from scipy import misc io 但我收到这些错误 Traceback most recent call last File C work asaaki code generateProposals py li
  • Wix 4 收获目录的解释?

    我正在尝试学习 Wix 4 0 来为我正在开发的应用程序创建安装程序 构建我的应用程序后 我在一个文件夹中有一堆文件 我想将它们安装到程序文件中 我已经读到收获功能允许我简化此过程并为整个目录创建组件映射 但我不确定这是什么example
  • 为什么安装 Ruby 1.9.3 时会出现 404 错误?

    我最近擦除了我的计算机 操作系统 Mac OS X 10 6 8 并重新安装了所有开发工具 我再次安装了RVM 但是 它不允许我安装 Ruby 1 9 3 到目前为止我已经尝试过 rvm install 1 9 3 rvm install
  • 如何禁用恢复 Visual Studio 安装程序项目丢失的文件?

    我创建了一个使用来自暴雪 API 服务的图像的程序 我为该程序创建了一个安装程序 并将图像放置在 用户的应用程序数据文件夹 中 安装非常好 图像被解压到文件夹 AppData Roaming MyApp 中 如果需要删除图像 程序将从暴雪服
  • WIX 工具集 - 自定义操作命令无法正确检测 Windows 10 版本

    我有一个安装程序 可以部署并运行单独的 exe文件以将驱动程序部署到系统 不幸的是 微软似乎已经放弃了对VersionNTWindows 10 及更高版本中的宏 所以我实施了另一篇文章中建议的方法 https stackoverflow c
  • 在 WiX 中轻量运行时,DefaultDir 无效

    我只是想做一个安装程序 将一些文件移动到程序文件中 设置开始菜单链接 并出现在要卸载的添加 删除程序中 目前我很乐意点击开始菜单链接 因为这看起来相对简单 需要注意的是 我特别希望可以通过脚本构建它without任何类型的全局安装 这意味着
  • 无法使用wix工具集创建postgresql数据库

    我正在尝试使用 Wix ToolSet 在 PostgreSQL 中创建数据库 但总是收到错误 错误 2147467259 无法创建 SQL 数据库 pontow 错误详细信息 未知错误 当我尝试创建数据库或错误 无法连接到 SQL 数据库
  • WiX Installer:获取正在升级的产品版本

    在从版本 X 到版本 Y 的主要升级过程中 我需要一个属性 变量来表明版本 X 正在升级 当使用 WiX Installer 构建的安装程序对产品进行主要升级时 是否有办法获取正在升级的版本号 假设您使用 WiX Majorupgrade
  • WIX Heat.exe 命令参数 -var 不接受空格?

    我有这个使用所有不变路径的 WIX 命令 并且它不需要系统环境 与此示例不同 http weblogs sqlteam com mladenp archive 2010 02 23 WiX 3 Tutorial Generate filed
  • WiX 自定义操作项目 - BadImageFormatException

    我正在开发我的第一个自定义操作 但无法加载生成的 CA dll 文件 这是最简单的过程和结果 我创建了一个自定义操作项目并保留所有默认值 该类看起来像这样 using Microsoft Deployment WindowsInstalle
  • 为什么我的应用程序会触发另一个应用程序的安装程序?

    当使用旧版 VB6 应用程序并在该应用程序中打开某些特定表单时 会弹出属于 Microsoft Navision 安装在同一台计算机上 的 Windows Installer 如附图所示 每次都会发生这种情况 但仅限于这台机器 VB6应用程
  • iPhone:应用程序安装失败并出现“无效签名者”错误

    iPhone 连接到运行最新 iTunes 版本的 Mac 我 100 确定她的 UDID 在配置文件中 她的iPhone还没有越狱 我们甚至还恢复了出厂设置 我在这一台 iPhone 上安装我们的开发版本时遇到问题 错误是 应用程序 应用
  • 如何与静默安装的 msi 交互? (进度数据并取消)

    由于某种原因 我们正在提供带有我们自己的安装 GUI 的产品 这意味着我们将在后台静默运行 msi 安装 通过使用 MSI API MsiInstallProduct 我可以静默安装该产品 但我不知道如何获取此安装的进度数据以及如何取消它
  • Windows7上python3.5无法安装BeautifulSoup4

    我已经从下载了 beautifulsoup4 4 5 3 tar gzhttps www crummy com software BeautifulSoup bs4 download 4 5 https www crummy com sof
  • 安装后如何执行Wix自定义操作?

    我正在使用 Wix3 将 WCF 服务安装到 IIS 安装完成后如何使用我的自定义操作 c 函数 即我需要打开已安装的 web config 文件并将主机名替换为真实的主机名 有任何想法吗 您可以安排在之后安装完成 http wix sou

随机推荐