Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Wix多盘布局要求-缓存和定位介质_C++_Caching_Wix_Windows Installer_Bootstrapper - Fatal编程技术网

C++ Wix多盘布局要求-缓存和定位介质

C++ Wix多盘布局要求-缓存和定位介质,c++,caching,wix,windows-installer,bootstrapper,C++,Caching,Wix,Windows Installer,Bootstrapper,第一次在这里问问题,可能不是最后一次。这与WiX 3.8有关 我的公司开始进入安装业务,我的任务之一是为我们的产品创建多光盘安装。我以前使用WiX进行简单的补丁,但现在我们想要创建一个完整的安装。其中一些要求包括: 为多张光盘创建外部cab文件[我通过将媒体标签中的“EmbeddeCAB”属性设置为“否”并将每个文件元素的光盘ID设置为“低压缩”来启用此功能] 完成的版本将有5张光盘放在单独的文件夹中,每个文件夹中都有受尊重的外部cab文件[媒体标签“布局”设置为目标] 正在“Disc1”文件

第一次在这里问问题,可能不是最后一次。这与WiX 3.8有关

我的公司开始进入安装业务,我的任务之一是为我们的产品创建多光盘安装。我以前使用WiX进行简单的补丁,但现在我们想要创建一个完整的安装。其中一些要求包括:

  • 为多张光盘创建外部cab文件[我通过将媒体标签中的“EmbeddeCAB”属性设置为“否”并将每个文件元素的光盘ID设置为“低压缩”来启用此功能]
  • 完成的版本将有5张光盘放在单独的文件夹中,每个文件夹中都有受尊重的外部cab文件[媒体标签“布局”设置为目标]
  • 正在“Disc1”文件夹中执行.msi文件[该文件夹工作…几乎正常]
我遇到的问题是,当.msi文件位于硬盘上时,无论是在光盘布局外部还是在“Disc1”子文件夹中,它都找不到其他.cab文件。我的要求是,在搜索下一个子文件夹“Disc2”并找到要安装的下一个.cab文件后,我需要找到一种方法,仅当且仅当能够提示输入光盘。因此,它不仅可以查看.msi所在的根目录,还可以检查子文件夹中所需的cab文件。(这几乎是模仿的InstallShield,但我真的不想走那条路。)

第二个问题是关于引导者。.exe文件需要根据需要嵌入.msi文件。但是,即使禁用msi文件的缓存,引导程序似乎也会开始缓存所有其他.cab文件(我们说的是20GB的安装)。即使禁用修复和回滚,引导程序也会继续尝试将cab文件缓存到我的系统上的PackageCache区域

我在网上查阅了WiX的书籍,以帮助找到解决方案,但我似乎终于走到了死胡同。有人能给我一些想法或见解来帮助解决这个问题吗

到目前为止,我已经尝试了一些事情: -使用自定义操作(C++)执行“ResolveSource”以尝试更改“SourceDir”属性以继续安装 -考虑过制作一个自定义引导程序来完全禁用包缓存事件,但是我不知道从哪里开始

如果您有任何建议、指导或样品可以提供帮助,我们将不胜感激


谢谢

因此,在这个问题上,我发现了一些可能是问题的东西。我使用WiX Toolkit(3.8和3.9)运行了一些测试,即使将MsiPackage元素设置为Cache=no,包和所有.cab文件仍在缓存中。我觉得这是一个大问题,应该加以考虑。我还没有在WiX 3.6上测试过它。我还发现了一个名为“IExpress”的实用程序,它基本上将.msi文件转换为.exe安装文件。因为我的MSI文件不需要先决条件,所以这个解决方案非常有效。