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

从Inno Setup向GAC添加程序集

从Inno Setup向GAC(全局程序集缓存)添加程序集的过程包括以下几个步骤:

  1. 首先,确保已经安装了.NET Framework,因为GAC是.NET Framework的一部分。
  2. 使用Inno Setup编译器创建安装程序。在安装程序中,将程序集文件添加到Files部分,并将其安装到应用程序的安装目录中。
  3. 在安装程序的Code部分中,使用Pascal Script编写代码来将程序集添加到GAC中。可以使用以下代码示例:
代码语言:txt
复制
[Code]
const
  GACUTIL = 'C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\gacutil.exe';

function AddAssemblyToGAC(const AssemblyFile: String): Boolean;
var
  ResultCode: Integer;
begin
  if not FileExists(GACUTIL) then
  begin
    Log('Error: gacutil.exe not found');
    Result := False;
  end
    else
  begin
    Exec(GACUTIL, '/i ' + AssemblyFile, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
    Result := ResultCode = 0;
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssPostInstall then
  begin
    if not AddAssemblyToGAC(ExpandConstant('{app}\MyAssembly.dll')) then
      MsgBox('Error: Failed to add assembly to GAC', mbError, MB_OK);
  end;
end;

在这个示例中,我们定义了一个名为AddAssemblyToGAC的函数,它将程序集添加到GAC中。函数首先检查gacutil.exe是否存在,然后使用它将程序集添加到GAC中。如果添加成功,函数将返回True,否则返回False。

在CurStepChanged函数中,我们调用AddAssemblyToGAC函数将程序集添加到GAC中。在这个示例中,我们假设程序集文件名为MyAssembly.dll,并且已经在Files部分中安装到应用程序的安装目录中。

  1. 编译安装程序并运行它。安装程序将会将程序集添加到GAC中。

注意:在使用Inno Setup向GAC添加程序集时,需要确保已经具有管理员权限,因为添加程序集需要管理员权限。

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

相关·内容

解决T4模板的程序引用的五种方案

目录 一、添加程序引用解决不了问题 二、将引用程序集安装到GAC 三、利用VS的PublicAssemblies目录 四、指定程序的具体路径...五、采用环境变量 六、使用VS宏 一、添加程序引用解决不了问题 如果你的T4模板需要调用一个自定义的类型,并且该类型定义在某个非系统程序集中,你就需要通过T4...#> public class HelloWorld {} 但是这种方式对于VS 2010则行不通,因为T4引擎在解析和编译模板的时候并不会项目引用列表中去定位目标程序...二、将引用程序集安装到GAC 其实我们有很多方式来解决这个问题,你首先想到的肯定是将引用的程序集安装到GAC中。没错,这是一种解决方案,如果被引用的程序具有强签名的话。...如果被引用的程序被没有被签名,GAC的方式则不能使用,在这种情况下你需要指定程序文件所在的位置,最直接的当然就是指定程序文件的绝对路径。

78170

怎样反射程序

第七部分:反射程序 1、什么是程序? 1、程序是.net中的概念。 2、.net中的dll与exe文件都是程序。(exe与dll的区别?)...4、程序包含:类型元数据(描述在代码中定义的每一类型和成员,二进制形式)、程序元数据(程序清单、版本号、名称等)、IL代码(这些都被装在exe或dll中)、资源文件。...2)、程序可以封装一些代码,只提供必要的访问接口。 6、如何添加程序的引用?...1)、添加路径、项目引用、GAC(全局程序缓存) 不能循环添加引用 在c#中添加其他语言编写的dll文件的引用。...动态连接库(=dynamic link library) GAC的详细配置参考:http://support.microsoft.com/kb/815808/zh-cn GAC目录C:\WINDOWS

48820

关于强命名程序

GAC    GAC 包含很多子目录,这些子目录是用一种算法来产生的,我们最好不要手动将程序拷贝到 GAC 中,相反,我们应使用工具来完成这样的工作。...首先, GAC 使得很多程序可以共享程序,这整体上减少了使用的物理内存;其次,我们很容易将一个新版的程序集部署到  GAC 中,并通过一种发布者策略(差不多就是一种重定向方法,比如将原来引用版本为...但是, GAC 的安全策略通常只允许管理员更改,同时, GAC 中安装程序也破坏了 .NET 框架的简单拷贝部署的许诺。...除了 GAC 或者以私有部署方式部署强命名程序之外,我们还可以将强命名程序集部署在仅为一小部分程序知道的某个任意目录下。...强命名策略: 生成公钥与私钥对,并 对私钥做严格的保护 生成:sn -k keyfile.snk 公钥与私钥对 抽取公钥:sn -p keyfile.snk public.snk keyfile中抽取公钥保存到

61510

常用软件打包类型及静默安装参数(nsis|msi|InstallShield|Inno)

可以使用命令行选项运行wise installation.exe,以自动执行常用任务 更多参数: /c file.wse WISE脚本创建可执行文件 /r 在 SetupCapture 窗口中打开WISE...六、Inno Setup 使用 Inno 技术制成的程序安装包可以使用 /SILENT 和 /VERYSILENT 参数进行静默安装。...我们可以通过使用一个参数跳过这个对话框: setup.exe /silent /suppressmsgboxes 有些利用 Inno 技术做作的安装包会在程序安装完毕后自动运行所安装的程序,例如:ISOBuster...以下是一个可以用于批处理文件安装 Inno 打包的软件的命令的示例: ECHO....Inno Setup 制作的安装文件,请使用下面的明显,安装完直接重启: setup.exe /sp- /silent /norestart 如何判断哪个安装程序是用 Inno 技术打包的?

12K22

.NET 5的重大改变:消失的历史技术

全局程序缓存 全局程序缓存(GAC)背后的理论是,所有.NET 库都可以存储在单个集中的位置。在这种方式下,它与 COM 库类似。但与 COM 不同的是,它可以存储每个库的多个版本。...因此,.NET Core 中没有 GAC 的概念。 尽管如此,GAC API 在.NET Core 中仍然存在。...它们所做的事情不多,例如,指示程序是否在 GAC 中的属性被硬编码为返回 false。 为了进一步明确意图,所有的 GAC API 现在都被标记为已过时,微软正考虑在未来的版本中删除它们。...IIS 之类的主机可以配置为运行具有不同“信任”级别的应用程序,理论上讲,是将它们放入一个沙箱中。 CAS 的另一个用途是用于浏览器托管的应用程序。...应用程序的信任级别部分取决于它是哪里加载的,内部站点会获得更高的权限。 但是和许多早期的.NET 技术一样,要正确地实现 CAS 很困难。

40120

Assembly.Load()方法,Assembly.LoadFrom()方法,Assembly.LoadFile()方法的区别!

1,Assembly.Load()          这个方法通过程序的长名称(包括程序名,版本信息,语言文化,公钥标记)来加载程序的,会加载此程序引用的其他程序,一般情况下都应该优先使用...: ⑴如果程序有强名称,在首先在全局程序缓(GAC)中查找程序。         ...⑵如果程序的强名称没有正确指定或GAC中找不到,那么通过配置文件中的元素指定的URL来查找 ⑶如果没有指定强名称或是在GAC中找不到,CLR会探测特定的文件夹:      假设你的应用程序目录是...2,Assembly.LoadFrom()           这个方法指定的路径来加载程序,实际上这个方法被调用的时候,CLR会打开这个文件,获取其中的程序版本,语言文化,公钥标记等信息,把他们传递给...3,Assembly.LoadFile()           这个方法是指定的文件来加载程序,和上面方法的不同之处是这个方法不会加载此程序引用的其他程序

2.4K10

起底勒索软件Trigona:扮猪吃老虎,闷声发大财

依据在线病毒分析平台VirusTotal获得的Trigona勒索软件的二进制文件、赎金信息,以及Unit 42安全事件响应的结果来看,安全研究人员确认Trigona勒索软件在2022年12月开始活跃,...turnoff.bat停止各种各样的服务和任务来看,该工具的另一个目的是确保更广泛的系统加密。...DC2.exe DC2.exe是一个用于Windows操作系统提取密码和身份验证凭据等敏感信息的工具,可以用来包括Mimikatz密码。...DC6.exe DC6.exe是公开可用工具Advanced Port Scanner的安装程序,常被打包在Inno Setup安装程序包中,而Inno Setup是Windows程序的免费安装软件。...在Inno Setup中藏着Advanced Port Scanner为代码增加了额外的混淆层,其目的是为了逃避静态签名检测。

1.3K50

蒋鸿翔:网易数据基础平台建设

今天分享的内容主要是数据库内核到大数据平台底层技术开发,分享网易数据科学中心多年的大数据建设经验。...300GB原始数据,分别导入到Inno DB(未压缩)和Inno Rocks后的存储容量对比,Inno DB为315GB左右,Inno Rocks为50 ~ 60GB,存储容量是Inno DB的20%到...(1)大量数据写入场景,比如日志、订单等;(2)需要高压缩以便存储更多的数据,Inno DB --> Inno Rocks;(3)对写入延迟波动比较敏感,HBase --> Inno Rocks;(4)...Bitmap应用的限制就是数据离散性不能太好,dinstct count的值不能太多,数据库中主键不适合做Bitmap,像省份等值比较少的适合做Bitmap。...如果数据数据库导入大数据平台离线分析其实时性比较慢,主要局限小文件以及导入批量大小问题,利用Kudu就不用考虑,可以直接通过Kudu实现数据变更导入大数据支持实时联查。

62140

websocket即时通讯

这种传统的模式带来很明显的缺点,即浏览器需要不断的服务器发出请求,然后HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的宽带等资源。...2、TCP连接成功后,客户端通过HTTP协议服务器传送websocket支持的版本号信息。(开始前的HTTP握手) 3、服务器收到客户端的握手请求后,同样采用HTTP协议回馈数据。...2、Socks5代理可以适用的业务场景 (1)ip封锁 当您尝试试图限制您的网站访问信息,ip很可能会被封锁。使用socks 5代理可以帮助消除此类限制,使你能正常访问网站。...七、SuperWebSocket实现服务端 1、创建窗口程序,WindowsFormsWebsocketServer 2、添加程序包 工具 –>Nuget包管理 –>管理解决方案的Nuget程序包 –>...webSocketServer.Setup("127.0.0.1", 1234)) { Log("设置服务监听失败!")

2.1K20
领券