我有一个安装程序,可以安装一些文件等。我们使用 Parrafin 来创建我们在安装程序中包含的.wxs文件。
当我添加某个.wxs
文件时,安装程序会挂起计算空间要求,如果我从安装程序中删除此文件,一切正常吗?
我试过阅读日志,但它只显示CostFinalize
并停在那里?
85284文件和组件
10333目录
37功能
85284 FeatureComponents
.wxs File Sizes门户网站位于顶部。
编辑:尝试在虚拟机上安装,也不会在那里安装。这只发生在我向安装程序添加(大)组件时。我尝试用Orca验证它,但它需要很长时间。刻录工具只给了我字体警告。
编辑2 :当我禁用多项功能并添加Portal功能时,安装程序似乎可以正常工作。这可能是我有很多功能吗?或者功能太大了?
编辑3 在处理完毕后,即使Portal不可用,也会发生这种情况。我不知道错误是什么。
编辑4 在搜索了更多内容之后,我发现这个site提供了每个组件和文件的最大数量。而且我已超过这个数字了。 Microsoft有一些信息,所以我会尝试的!
<DirectoryRef Id="INSTALLDIR">
<Directory Id="dir_F7990BC992434CA08269373C780FC09E" Name="Portal">
<Component Id="comp_AD6C481EA13D4A09886B6ABFE39FEB90" Guid="*">
<File Id="file_8C1F31FBCB1C442191C18E1C28DFE1D4" KeyPath="yes" Source="..\..\..\Portal\create_user_table.txt" />
</Component>
<Component Id="comp_667C7BA41A8C47B99216E1FCE9694FAD" Guid="SOME_GUID">
<File Id="file_5C0A67A5C1D045699C4605086A8985E0" KeyPath="yes" Source="..\..\..\Portal\package.json" />
</Component>
<Component Id="comp_6A5E08DD4BA041B79C2A803BF77AA911" Guid="SOME_GUID">
<File Id="file_7D9CAEFDA0274FD5962E008ED96D0DE0" KeyPath="yes" Source="..\..\..\Portal\README.md" />
</Component>
<Component Id="comp_47673BC5120B4E36B16C2F1C2A5B312C" Guid="SOME_GUID">
<File Id="file_F379EA1FAC914D04AE71C5F2935C01A6" KeyPath="yes" Source="..\..\..\Portal\server.js" />
</Component>
<Component Id="comp_186CD36E3F8D4E5C87883DEED6318719" Guid="SOME_GUID">
<File Id="file_490119871C7F40DDBA45887213D854D8" KeyPath="yes" Source="..\..\..\Portal\server.log" />
</Component>
<Component Id="comp_3DF5DC2F788943BA9C8306FA59732A11" Guid="SOME_GUID">
<File Id="file_96A709AF75D94034AD4B0E96B3BCE11A" KeyPath="yes" Source="..\..\..\Portal\service-install.js" />
</Component>
<Component Id="comp_DE5B71D9473F4FC489779922FE0D5952" Guid="SOME_GUID">
<File Id="file_9586EC6A7C434412A9B7E9B5FE81346C" KeyPath="yes" Source="..\..\..\MWSS-Portal\service-stop.js" />
</Component>
<Component Id="comp_FFE35627FB7E45D298BB83207930EC8C" Guid="SOME_GUID">
<File Id="file_B2776FD43A2D4F61B885018A011DACDC" KeyPath="yes" Source="..\..\..\Portal\service-uninstall.js" />
</Component>
<Directory Id="dir_F418E5D92B1A4D75981522C329550318" Name="app">
<Directory Id="dir_7F390C9C4EBA4BDBBA54E4099DD462A2" Name="controllers">
<Component Id="comp_EC62E12FA41E43FC96854CB9247CD409" Guid="SOME_GUID">
<File Id="file_D6FF1EAEEB4E4612B2E140E94B07C9AA" KeyPath="yes" Source="..\..\..\MWSS-Portal\app\controllers\configurationController.js" />
</Component>
<ComponentGroup Id="MWSS_Portal">
<ComponentRef Id="comp_AD6C481EA13D4A09886B6ABFE39FEB90" />
<ComponentRef Id="comp_667C7BA41A8C47B99216E1FCE9694FAD" />
<ComponentRef Id="comp_6A5E08DD4BA041B79C2A803BF77AA911" />
<ComponentRef Id="comp_47673BC5120B4E36B16C2F1C2A5B312C" />
日志的最后部分:
Action ended 16:32:47: FileCost. Return value 1.
MSI (c) (3C:DC) [16:32:47:481]: Doing action: CostFinalize
Action 16:32:47: CostFinalize. Computing space requirements
Action start 16:32:47: CostFinalize.
MSI (c) (3C:DC) [16:32:47:488]: PROPERTY CHANGE: Adding OutOfDiskSpace property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:494]: PROPERTY CHANGE: Adding OutOfNoRbDiskSpace property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:500]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceAvailable property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:512]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceRequired property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:513]: PROPERTY CHANGE: Adding PrimaryVolumeSpaceRemaining property. Its value is '0'.
MSI (c) (3C:DC) [16:32:47:546]: Note: 1: 2205 2: 3: Patch
答案 0 :(得分:1)
我花了一段时间,但我想我已经弄清楚了。
组件的最大数量是65536,我有95904.即使将表数据类型设置为long,它仍然失败。所以要么我必须为每个组件分配多个文件,要么将它分成不同的安装程序。
更新Paraffin源代码后,每个组件包含每个目录(而不是文件)。它安装。我现在有10623个组件。
答案 1 :(得分:0)
更新:我忘了Occam's razor这个 - 我仍然会在下面留下调试建议 - 也许有人可以在某些时候找到相关内容。
总之,尽管如此:有问题的软件包对于MSI文件的大小限制太大了,如下面的三个链接所述。这应该是我们对这些问题的首次怀疑(当在多台机器上看到相同的&#34;锁定问题&#34;)时
请考虑将您的设置拆分为多个MSI文件,然后通过Burn等引导程序或顺控程序进行安装,而不是处理这些大包。请参阅以下链接:
我只是将其添加为答案而不是带有评论的垃圾邮件。一旦我们获得更多信息,我将更新并发展它。
我假设你不在Win9x上?你试过验证吗?如果是这样,你有没有得到任何错误/警告?关于日志记录,可以尝试&#34; 刷新记录&#34;:
msiexec.exe /package "C:\Setup.msi" /L*V! "C:\msilog.log"
。
密钥是!
字符,它强制连续写入日志而不是批量写入。只是一个长镜头,看看你是否可以得到某种错误信息。
VM上的测试基本上强烈表明您的MSI文件中存在真正的错误 - 以某种形式。真的尝试验证 - 它可能不会告诉你任何事情,但如果它表明任何东西,那么你就可以开始了。
另外:您的MSI通常不应包含任何敏感信息,例如:login credentials
,passwords
,database connection strings
,user names
,share name
,{{1 },IP-addresse
或machine names
。所有这些都应该在转换时设置,或者在安装MSI时通过PUBLIC PROPERTIES设置 - 或者在目标系统上执行设置时输入设置GUI。这里有一些关于使用变换和公共属性的信息:How to make better use of MSI files。
更新:这个MSI有多大?以兆字节为单位,组件数量,文件数量等等...您可以尝试在其上运行管理员安装并安装和/或验证提取的MSI吗?另一个长镜头。
更新:我认为您的构建计算机可能存在问题。也许是run through this check list of possible problems。我首先尝试1)直接从本地磁盘运行MSI(没有网络驱动器),2)禁用防病毒或安全软件,3)你是否以管理员身份运行?你有UAC提示吗?这些日子不常见,但你也可能有32位/ 64位的问题。
更新:我不想让您偏离正轨,但我想提请您注意以下事实:您的很多源内容实际上都是必需的 - 所有长期ID属性等...我知道你是自动生成的,我从未使用过Paraffin,但你可以尝试删除所有这些不必要的属性,看看生成的MSI是否表现得更好:Syntax for guids in WIX?。如果所有其他方法都失败了,请尝试这个 - 我只是为了完整性而添加它。我并不认为这是真正的罪魁祸首,但这也不是不可能的。
更新:要解释MSI日志文件,强烈建议您从Windows Installer团队中查看 Robert Macdonald 中的这篇文章,以实际查看MSI日志记录:{{ 3}}。并How to Interpret Windows Installer Logs保管和未来参考。
更新:正如您所解释的那样,似乎您在&#34;花费&#34; (空格检查)。有一个属性可以设置为简化成本核算,它被称为quick link。这里描述了它用于加速安装的速度:MSIFASTINSTALL。也许尝试将其设置为3,如链接答案中所述(请参阅命令行以在答案中使用)。
更新:我真的认为这必须是一个经过反编译的Installshield MSI,它已经使用Paraffin进行了更新 - 或类似的东西 - 因此可能会出现一些奇怪的不相容性,这些不兼容性在Installshield&#39; s之间出现做事和WiX的方式。很难调试:-(。你会讨厌它,但我建议你尝试使用WiX自己的 heat.exe 快速创建一个类似的测试MSI来生成一个新的WiX源包含所有文件的文件。然后从新源编译一个新的MSI并仅在测试系统上运行以查看它是否按预期工作(快速)。此外,您是否可以访问Installshield?如果是,请打开现有的MSI,转到组件视图并选择第一个组件。在右侧的属性列表中,单击&#34;目标&#34;字段中的other sensitive data
或类似内容以打开目标文件夹列表。目录列表是否解析?(看起来是否符合预期)。