当前位置:  开发笔记 > 前端 > 正文

.msi文件可以自行安装(可能是通过自定义操作)吗?

如何解决《.msi文件可以自行安装(可能是通过自定义操作)吗?》经验,为你挑选了1个好方法。

我想构建一个MSI,它在安装过程中将自己与包含的文件/组件一起部署到TargetDir.

所以MyApp.msi在其文件表中包含MyApp.exe和MyAppBootstrapperEmpty.exe(没有资源).

用户启动MyAppBootstrapperPackaged.exe(包含MyApp.msi作为资源,从某处获取,或通过电子邮件或其他方式获得).MyAppBootStrapperPackaged.exe将MyApp.msi提取到临时文件夹并通过msiexec.exe执行.

在msiexec.exe进程完成后,我想要MyApp.msi,MyBootstrapperEmpty.exe(和%ProgramFiles%\ MyApp文件夹中的和MyApp.exe,以便MyApp.exe在运行时可以确保访问MyApp.msi(用于创建以下内容)提到包装内容).

MyAppBootstrapper*.exe可以尝试将MyApp.msi复制到%ProgramFiles%\ MyApp文件夹,但需要提升才能执行此操作,并且不允许通过Windows Installer卸载过程(从"添加/删除程序"或其他方式)删除它,应该保留.

显然(我认为这很明显 - 我错了吗?)我不能将MSI作为文件包含在我的Media/CAB(鸡蛋和鸡蛋场景)中,所以我认为必须在安装之前通过自定义操作完成进程,将原始MSI添加到MSI DB的Media/CAB以及动态文件表中的相应条目.可以这样做,如果是这样的话怎么办?

想一想内容分发模型,其中内容文件只能与App一起分发.内容由最终用户在运行时通过App生成,并打包成可分发的EXE,其中包括App和内容.

MyApp的安装程序必须保持MSI,但可以由Bootstrapper EXE执行.安装的MyApp.exe必须能够访问MyApp.msi和EXE将在运行时由应用程序从基础(空)MyAppBootstrapper.exe(也由MSI安装)和由内容创建的内容"组装".最终用户.EXE的资源MSI必须与用于安装运行时打包的App的资源相同.

WIX不与MyApp一起安装.

在运行/打包时不存在网络依赖性(即不能通过Web服务进行打包 - 必须在本地完成).

我熟悉(和使用)自定义操作(托管和非托管,通过DTF等).



1> Wim Coenen..:

将未压缩的媒体添加到您的wx中,如下所示:


然后用这样的File元素创建一个组件:


这将使安装程序在安装介质上查找名为"myinstaller.msi"的文件,该文件与正在安装的msi位于同一文件夹中.上面的源路径应该指向一个虚拟文件,它只是安抚wix.

编辑:以下示例test.wxs演示它的工作原理.它生成一个test.msi文件,该文件将自身安装到c:\ program files\test.请注意,您需要将一个虚拟的test.msi文件放在与text.wxs相同的文件夹中以安抚wix.



   
      

       
       

      
         
            
               
                  
               
            
         
      

      

         
      

   

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有