WixSharp v1.9.2打包大文件夹为单MSI遇文件打开错误求解决方案
你遇到的问题根源是Windows Installer的OLE Structured Storage格式上限——传统MSI采用该格式存储,单个文件大小超过2GB时会触发读取失败错误,这就是你看到The system cannot open the device or specified file的原因。
针对你的需求,可尝试以下方案:
压缩后控制MSI总大小在2GB以内
调整MediaTemplate的参数,进一步降低分卷大小,比如把MaximumCabinetSizeForLargeFileSplitting设为更小的值(如512或1024),同时确认CompressionLevel已设为最高的mszip。如果压缩后的所有嵌入CAB总大小能降到2GB以下,单个MSI就能正常运行。用自解压包封装MSI和外部CAB
如果内容压缩后仍超2GB,可将生成的MSI和CAB文件打包为单个自解压格式文件(比如用7-Zip创建自解压包,或用Inno Setup打包成单EXE)。安装时自解压包会自动将CAB释放到临时目录,再调用MSI完成安装,用户感知到的仍是单个文件。升级WixSharp版本(需验证兼容性)
部分较新的WixSharp版本适配了WiX的大文件支持特性,但要注意:即使WiX支持超过2GB的MSI,Windows 7及更早版本的Windows Installer仍存在2GB上限,若需兼容旧系统,此方案不可行。
总结:单个MSI文件无法突破Windows Installer的2GB格式限制,若必须单文件分发,优先考虑自解压包封装方案。
内容的提问来源于stack exchange,提问作者El_Merendero

