首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WIX -将文件同时添加到GAC和INSTALLFOLDER,而不更改名称

WIX是一种开源的软件安装包创建工具,它允许开发人员创建用于安装、升级和卸载软件的Windows Installer包。WIX使用XML格式的源代码描述安装包的组件、文件、注册表项、服务等。

将文件同时添加到GAC(全局程序集缓存)和INSTALLFOLDER(安装文件夹)是一种常见的需求,特别是在开发需要使用共享程序集的应用程序时。GAC是一个全局的程序集存储位置,用于存储和共享多个应用程序所需的公共程序集。而INSTALLFOLDER是指安装文件夹,即应用程序安装到计算机上的目录。

为了实现将文件同时添加到GAC和INSTALLFOLDER,可以使用WIX提供的功能和组件来完成。以下是一种可能的实现方式:

  1. 在WIX源代码中定义一个组件,用于描述要安装的文件。例如:
代码语言:txt
复制
<Component Id="MyFileComponent" Guid="PUT-GUID-HERE">
    <File Id="MyFile" Source="path\to\file.dll" KeyPath="yes" />
</Component>
  1. 在WIX源代码中定义一个安装目录,用于指定INSTALLFOLDER。例如:
代码语言:txt
复制
<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="INSTALLFOLDER" Name="MyApp" />
</Directory>
  1. 在WIX源代码中定义一个安装组件,将之前定义的组件和安装目录关联起来。例如:
代码语言:txt
复制
<Feature Id="MainFeature" Title="Main Feature" Level="1">
    <ComponentRef Id="MyFileComponent" />
</Feature>
  1. 在WIX源代码中定义一个安装动作,用于将文件添加到GAC。例如:
代码语言:txt
复制
<CustomAction Id="InstallToGAC" FileKey="MyFile" ExeCommand="&quot;[WindowsFolder]\Microsoft.NET\Framework\v4.0.30319\gacutil.exe&quot; /i &quot;[INSTALLFOLDER]path\to\file.dll&quot;" Execute="deferred" Return="check" />
  1. 在WIX源代码中定义一个安装序列,将之前定义的安装动作与安装组件关联起来。例如:
代码语言:txt
复制
<InstallExecuteSequence>
    <Custom Action="InstallToGAC" After="InstallFiles">NOT Installed</Custom>
</InstallExecuteSequence>

通过以上步骤,WIX将会在安装过程中将文件添加到GAC和INSTALLFOLDER,而不需要改变文件名称。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WiX 制作安装包:创建一个简单的 msi 安装包

编辑 Product.wxs 文件 添加要打包的文件 在 Product.wxs 文件中,找到提示你放文件、注册表项其他资源的注释“<!...如果你有自己的项目名,则在此改成你自己的项目名称。 本例的目标程序只有一个文件,因此我们只放了一行,如果你要打包多个文件,可返回本教程目录页查阅其他文章。...因为如果你填,编译会报错: ▲ 缺少厂商信息 这个信息在 Product 标签的特性上更改: 1 2 3 4 5 6 7 8 <Product Id="*" -- Name=...毕竟谁也希望系统“应用功能”里显示的名字不是真正的产品名吧…… 另外,其他属性的值也值得留意。但在你明白他们的真实含义之前,建议修改其值。...,以避免陈旧错误知识的误导,同时有更好的阅读体验。

1.3K60

关于强命名程序集

MyCompany.keys 文件包含以对以二进制格式存储的公有密钥私有密钥。    ...其实不是这样的,在命令行下查看,你会发现它实际上包含很多子目录,子目录的名字程序集的名称是相同的,但它们都不是实际的程序集,实际的程序集位于程序集名对应的目录下。...在 GAC 中注册程序集跟 COM 注册差不多,但相对更容易:    1 .把程序集添加到 GAC 中:  GACUtil /i sample.dll  (参数 /i 是安装的意思...1.0.0.0 程序集的程序,通过更改它的配置文件,转而让程序去引用版本为 2.0.0.0 的程序集)来使用新版本;最后, GAC 还提供了对不同版本程序集的并存( side-by-side...但是, GAC 的安全策略通常只允许管理员更改同时,向 GAC 中安装程序集也破坏了 .NET 框架的简单拷贝部署的许诺。

63610

WiX 安装包制作最佳实践:Id、UpgradeCode 应该怎么设置?

WiX 安装包制作时,Product.wxs 文件中的 Product 标签中存在一些属性,这些属性应该如何设置才是比较合适的呢?...关于这两个值的变化: 如果这两个值都没有更改构建出一个新的 MSI 安装包,那么 Windows Installer 会认为这两个包之间属于“小型更新”(Update)。...如果 Version 属性更改 Id 属性没有更改,那么 Windows Installer 会认为这两个包之间属于“次要升级”(Upgrade)。...在没有配置升级策略的情况下,如果有两个不同的 MSI 包设置了相同的 Id Version,那么当安装了其中一个之后,另一个无法安装。...,以避免陈旧错误知识的误导,同时有更好的阅读体验。

48280

Apriso 开发葵花宝典之传说的完结篇GPM

TocPath=Global%2520Deployment%2520View%257CGlobal%2520Deployment%2520Overview%257C_____0 发布顺序 实体GAC组件等一旦将它们添加到项目的内容中...重置实体的最后修改日期—每个实体的修改日期设置为部署包的日期。如果选择,系统保留源服务器的修改日期。保留实体的最后修改日期意味着还可以在源服务器以外的服务器上创建“最新更改“所有更改”包。...在存储库中存储项有两种方法: 全部内容-只适用于以下项目: GAC组件 文件 SQL脚本 存储过程(数据库对象) 自定义动作 配置文件 自上次生成包以来检测到的更改列表(“diff”)(以扩展名为.diff...当第一次这样的项目添加到存储库中时,没有版本可以与之比较,因此在存储库中创建的文件包含项目的类型名称以及相关的信息。...在GPM SQL脚本编辑器中存储SQL脚本:SQL脚本项目内容保存在GPM SQL脚本编辑器中,不是保存在外部文件中。它将确保更容易访问脚本内容。 9.

21210

WCF集成COM+应用程序遇到的问题

另外补充: 一般来说,程序集(dll)安装到GAC中有以下两种方法: 1.手动将要安装部署的dll文件拖至:\Windows\Assembly文件夹下 2.使用gacutil.exe...其实不是这样的,在命令行下查看,你会发现它实际上包含很多子目录,子目录的名字程序集的名称是相同的,但他们都不是实际的程序集,实际的程序集位于程序集名对应的目录下。...因为GAC包含很多子目录,这些子目录是用一种算法来产生的,我们最好不要手动程序集拷贝到GAC中,相反,我们应使用工具来完成这样的工作。因为这些工具知道GAC的内部结构。...CLR找到引用的DLL名称后是怎么去寻找的呢?...它一般情况下遵循下面的原则: 1.如果程序集有强名称,在首先在全局程序集缓(GAC)中查找程序集----->GAC(应该是先找平台相关的,例如:GAC_32,GAC_64,然后找去找GAC_MSIL)。

65610

.NET面试题系列 - .NET框架基础知识(2)

CLR是程序集一起工作的,不是托管模块一起。...例如My.dllYour.dll同时在一个命名空间A中定义了一个类B,则它们是不同的。...有时候当安装某些应用程序时,也会触发安装程序程序集放入GACGAC是一个机器级别的程序集,其中包括mscorlib.dll等至关重要的程序集。...在全局程序集缓存中部署的程序集必须具有强名称一个程序集添加到全局程序集缓存时,必须对构成该程序集的所有文件执行完整性检查。 4 综合问题 题目:hello world程序。...不断解耦:例如WPF相比Winform,更好的做到了将设计代码分开,真正让两拨人同时工作。最新的ASP.NET Core彻底System.WebIIS解耦。

1.3K20

WiX 制作安装包:创建一个简单的 exe 安装包

注意,选择的模板要注意这些要点: 图标上标记了“wix”,标签上标记了“WiX” 模板简介中说明这是在创建“EXE”文件 创建完后,记得去项目属性里改一下输出的文件名。...例如可以改成主项目的名称,也可以改成“XXX_Setup”这些大家喜欢用的名称。 引用 MSI 项目 我们现在的这个项目生成的是捆绑包(Bundle),是为了多个安装包集合到一起进行安装的。...可选值为 yes no default,对于 MSI 文件会默认嵌入,所以也可以指定。...前往 EXE 文件的输出目录(在项目目录的 bin\Debug 下): ▲ 前往 EXE 文件的输出目录 双击安装,可以出现默认的安装界面: ▲ 默认的安装界面 安装完后,可以在系统设置“应用功能...,以避免陈旧错误知识的误导,同时有更好的阅读体验。

1K20

WiX 制作安装包:为 WiX 制作的 exe 安装包添加 .NET Framework 前置的安装步骤

在 wxs 文件中,他们分别是 元素的直接子级,彼此拥有不同的元素特性(Attribute)子级(Child)——相互之间不可通用。...如果你打算 .NET Framework 的安装包嵌入到捆绑包中或者随包放到单独的文件中,那么请继续操作。....NET Framework 的离线安装包(为了避免读者在概念上产生混淆,我刻意避开使用 redist 这个名字,以示说明解决方案内的文件夹结构仅为开发文件夹结构,代表最终捆绑包内的虚拟目录结构)。...每个 .NET Framework 版本都有自己对应的文件名称,如果还想继续用 WixNetFxExtension.dll 中提供的安装 .NET Framework 的功能,那么从官网下载文件后就不能改名字...,以避免陈旧错误知识的误导,同时有更好的阅读体验。

67710

使用WiX制作简单MSI安装程序

MSIMSM测试wix工具箱.它提供了直观的、轻松的对话方式编辑wix文件来源。...产品名称(Name), 制造商(manufacturer), 版本(version)是必须的。在 WiX 帮助文件WiX 架构部分中查看“Product 元素”页。...对于许多安装程序(例如本示例),最好在 MSI 中将所有安装源文件打包在一起。通过 Media 元素,我们只需指定希望文件存储到压缩嵌入式 .cab 文件即可。...是 Cabinet 字符串 Cabinet 的名称(如果存储在媒体上的部分文件或所有文件都压缩到了 Cabinet 文件中)。如果未使用任何 Cabinet,此属性必须为空。...当产品的某些特性在默认情况下不安装,或者典型安装完全安装有很大不同时,使用WixUI_Mondo。 WixUI_FeatureTree :是WixUI_Mondo的简单版本。

3.5K90

基于Kafka的六种事件驱动的微服务架构模式

Wix Business Manager另一个国家/地区添加到“国家/地区”主题时,Wix Bookings会使用此更新并自动为“时区”主题添加新的时区。...Wix Events(允许 Wix 用户管理活动门票 RSVP)还可以使用Bookings的时区主题,并在一个国家/地区更改其时区以实现夏令时自动获取其内存中 kv 存储的更新。...Wix 最近开源了Greyhound,很快就会对 beta 用户开放。要了解更多信息,您可以阅读 github自述文件。...事件聚合 …当你想知道一整批事件已经被消费了 在联系人导入 Wix CRM 平台的业务流程。后端包括两个服务。提供 CSV 文件并向 Kafka 生成作业事件的作业服务。...以及使用执行导入作业的联系人导入器服务。 让我们假设有时 CSV 文件非常大,工作负载拆分为较小的作业更有效,每个作业中要导入的联系人更少。

2.2K10

6种事件驱动的架构模式

该架构还具有更高的可伸缩性和解耦性,因为状态管理完全从服务中移除,并且不需要对查询进行数据聚合维护。 考虑一下这种情况,所有 Wix 用户的联系方式导入 Wix 平台。...Business Manager 另一个国家添加到“国家”主题时,Wix Bookings 会消费此更新,并自动为“时区”主题添加一个新的时区。...Wix Events(供 Wix Users 管理事件传票 RSVP)也可以使用 Bookings 的时区主题,并在一个国家因为夏令时更改时区时自动更新其内存 kv-store。...假设 CSV 文件有时非常大,工作负载分割成更小的作业,每个作业中需要导入的联系人就会更少,这个过程就会更高效。...这些更新可以同时发生,因此,可能会出现竞态条件并导致作业完成计数器失效。

2.4K20

偏爱MySQL,Nifty使用4个Web Server支撑5400万个用户网站

Wix使用了多数据中心云服务,这在通常情况下非常少见,他们数据同时复制到Google Compute EngineAWS。对于故障转移,他们有专门的应对策略。 从始至终,Wix都没有使用事务。...Wix并不是缓存策略爱好者,简而言之他们并没有打造一个非常高端的缓存层。取而代之,他们大部分的精力放在了路径渲染优化上,让每个页面的显示时间超过100毫秒。...Wix之所以不使用NoSQL的原因是NoSQL往往会牺牲一致性,通常开发者并不具备处理这种情况的能力,所以坚持MySQL也并非不可。 动态数据库。...取得所有JSON文件,随后按照顺序将他们保存到数据库。当所有数据被保存后,一个命令会被发布,它包含了上传到这个静态服务器上所有被保存页面的ID清单(静态服务器中文件名称的哈希值)。...取代缓存一切,Wix通过优化渲染途径来提升服务,并将数据在活跃档案数据库中同时进行备份。 使用不可变的方式。

1.3K100

聊聊事件驱动的架构模式

Business Manager 另一个国家添加到“国家”主题时,Wix Bookings 会消费此更新,并自动为“时区”主题添加一个新的时区。...Wix Events(供 Wix Users 管理事件传票 RSVP)也可以使用 Bookings 的时区主题,并在一个国家因为夏令时更改时区时自动更新其内存 kv-store。...Wix 最近开放了 Greyhound 的源代码,不久提供给测试用户。要了解更多信息,可以阅读 GitHub 上的自述文件。...假设 CSV 文件有时非常大,工作负载分割成更小的作业,每个作业中需要导入的联系人就会更少,这个过程就会更高效。...这些更新可以同时发生,因此,可能会出现竞态条件并导致作业完成计数器失效。

1.5K30

Java 编程问题:九、函数式编程——深入研究

super T> comparator):根据给定的Comparator对流进行排序 让我们这些操作和一个filter()添加到一个示例中。...生成的四个密码被添加到结果中,不受dropWhile()的影响。 现在,假设我们有一个无序的整数流。...方法引用主要是一种通过名称不是通过描述如何调用方法来调用方法的技术。主要的好处是可读性。 方法引用是通过目标引用放在分隔符::之前来编写的,方法的名称在它之后提供。...因此,以区分大小写的方式按类型排序非常有用。这个问题的优雅解决方案依赖于另一种风格的thenComparing(),它允许我们传递一个FunctionComparator作为参数。...198 默认方法 默认方法被添加到 Java8 中。它们的主要目标是为接口提供支持,以便它们能够超越抽象契约(仅包含抽象方法)发展。

1.7K10

如何零宕机本地 Kafka 集群迁移上云?

分层存储 Confluent 平台提供了分层存储,使得 Kafka 的记录保留期大大延长,而且不需要支付高昂的磁盘空间费用,通过旧的记录转移到更便宜的 S3 存储,增加新的费用。... 2000 个微服务切换到多集群 Kafka 架构 在 Wix,我们拥有一个标准的 JVM 库代理服务,用于与 Kafka 进行交互,称为 Greyhound。...因为 Wix 微服务通过 Greyhound 层与 Kafka 集群相连,所以只要在 Greyhound 的生产配置就可以更改连接(同时保证仅有一个数据中心受到影响)。...最初的迁移设计需要请求生产者切换集群连接,同时仍然接受传入的生产请求。这就意味着这些请求缓存到内存中,而且被人们认为相当危险。...如果你可以充分利用数据中心完全耗尽流量的时间,或者可以承受得住处理的停机时间,那么我强烈建议生产者消费者切换到新集群,不是首先复制数据。这样的设计更加容易,你也可以节省更多的时间。

1K20

C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService(二)

通常用于执行返回结果集的 SQL 命令,如 INSERT、UPDATE、DELETE 语句。2、用途适用于执行对数据库进行更改的操作,不需要检索结果集的情况。...适用于需要多个应用程序共享相同代码的情况,通过共享程序集安装到 GAC,可以提供代码的重用版本控制。...强名称使得两个不同的程序集即使版本号相同也可以被区分开来,同时还可以提供一定的防篡改保护。总结区别:私有程序集是应用程序特定的,通常位于应用程序安装目录中,不与其他应用程序共享。...共享程序集是可以供多个应用程序共享使用的,通常位于全局程序集缓存(GAC)中,需要具有强名称。共享程序集适用于需要代码重用版本控制的情况,私有程序集适用于独立部署的应用程序。56....4、分页数据当处理大量数据时,考虑对数据进行分页,只检索显示需要的数据量,不是一次性检索所有数据。5、异步加载使用异步加载技术,例如 AJAX,数据异步加载到页面,不必等待整个页面加载完成。

18010
领券