• WiX安装选项注册程序集到GAC和VS的设计时环境


    Visual Studio的设计时引用组件的窗口中看到的程序集的位置和程序集的运行时位置是不一样的,特别是在全局程序集缓存(GAC)中的程序集,通过WiX制作Winodws安装程序的时候需要处理这个区别。

    VS的设计时的添加引用窗口看到的程序集的位置来自注册表SOFTWARE\Microsoft\.NETFramework\AssemblyFolders – 放在HKEY_LOCAL_MACHINE 下面就是针对所有的用户, 或者放在HKEY_CURRENT_USER 下面针对当前用户。

    WiX要把一个程序注册到GAC,只需要在File 上增加一个选项 Assembly=".net" 就可以了,但是注册到GAC的dll不会放到安装目录下方了,这就需要通过提供两个Component方式来处理,例如下面的配置:

    <?xml version="1.0" encoding="utf-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
      <Product Id="a960cf35-0779-43e8-923b-35638f2bfc42" Name="Minimal" Language="2052" Version="1.0.0.0" Manufacturer="Geffzhang" UpgradeCode="0bf7e020-5bbd-4a06-8e39-e715999edbf5">
        <Package InstallerVersion="200" Compressed="yes" Description="Minimal Windows Installer Sample" Comments="This installer database contains the logic and data required to install Minimal Windows Installer Sample." />
        <Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
        <Property Id="EnableEV" Value="1">
        </Property>
        <Condition Message="你必须有管理员权限才能安装应用程序"><![CDATA[Privileged]]></Condition>
        <Directory Id="TARGETDIR" Name="SourceDir">
          <Directory Id="ProgramFilesFolder">
            <Directory Id="INSTALLLOCATION" Name="Minimal">
              <Component Id="Component1" Guid="{1781A625-8ACB-45E7-A8BA-219D81760B2E}">
                <CreateFolder />
                <Environment Id="TestMinVar" Action="set" Part="all" Name="MinEnvVar" Permanent="no" System="yes" Value="8" />
                <File Id="File_Payload" Source="payload.txt" KeyPath="yes" />
              </Component>
              <Directory Id="GAC" Name="GAC">
                <Component Id="RTGACTest" Guid="22887611-B13E-41EE-897C-D78830E68AEB" DiskId="1">
                  <!-- Runtime, assembly in GAC -->
                  <File Id="F_RT_GACTEST"  LongName="GACTest.dll" Source="..\build\GACTest.dll" KeyPath="yes" Assembly=".net" />
                </Component>
              </Directory>
              <Component Id="DTGACTest" Guid="FB935B7D-D2BD-4B83-A26C-A9376EBA0915" DiskId="1">
                 <!--Design-time, private assembly--> 
                <File Id="F_DT_GACTest" LongName="GACTest.dll" Source="..\build\GACTest.dll" KeyPath="yes" />
                <Registry Id="R_DT_MyControl_AssemblyFolders" Root="HKLM" Key="SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\[ProductName]" Value="[$DTGACTest]" Type="string" />
              </Component>
            </Directory>
          </Directory>
        </Directory>
        <Feature Id="ProductFeature" Title="Minimal" Level="1">
          <ComponentRef Id="Component1" />
          <ComponentRef Id="DTGACTest"/>
          <ComponentRef Id="RTGACTest" />
        </Feature>
        <Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
        <UIRef Id="WixUI_InstallDir" />
        <UI />
      </Product>
    </Wix>
    上面的例子的GACTest.dll注册了两个Component--RTGACTest和DTGACTest,RTGACTest下的File增加了属性Assembly=".net",DTGACTest则没有增加,同时在DTGATest增加了一个注册表项目。

    欢迎大家扫描下面二维码成为我的客户,为你服务和上云

  • 相关阅读:
    LiveGBS接入LiveQing流媒体服务实现摄像头云端录像和和直播以及大屏展示
    摄像头网络直播方案LiveGBS部署问题 使GB28181实现无插件web直播
    Linux 查看磁盘读写速度IO使用情况
    安防监控摄像头接入云端实现直播、录像和大屏展示
    H265摄像头如何实现网页直播
    解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
    H5实现无插件视频监控按需直播
    LiveQing视频云平台部署实践
    将RTSP网络摄像机进行网页和微信直播的方案
    Android虚拟机运行问题之小结
  • 原文地址:https://www.cnblogs.com/shanyou/p/1359037.html
Copyright © 2020-2023  润新知