包本身有一个VB脚本。我需要使用CMD调用它,这是调用脚本的默认方式,所以我尝试用CMD和CSCRIPT调用它,但是安装程序在安装时会引发错误。
我正在使用下面的代码,它不像预期的那样工作。我找了很多次,但没有找到解决办法。
<Binary Id="ServiceInstall" SourceFile="..\..\..\AddVirDir.vbs" />
<CustomAction Id="InstallService" BinaryKey ="ServiceInstall"
ExeCommand="CMD /C "[#ServiceInstall]""
Execute="immediate" Return="check" HideTarget="no" Impersonate="no"/>发布于 2018-08-29 08:51:17
服务安装和控制:您不应该安装带有脚本的服务。在MSI中有一些内置的机制是非常优越的。您只需使用ServiceInstall和ServiceControl WiX XML元素,并“声明”应该如何注册服务,以及何时和如何启动和停止服务:
<Component>
<File Source="$(var.SourceDir)\WindowsService.exe" />
<ServiceInstall Name="MyService" ErrorControl="normal" Start="auto" Type="ownProcess" />
<ServiceControl Id="MyService" Name="MyService" Start="install" Stop="both" Remove="uninstall" Wait="yes" />
</Component>看!没有自定义操作!:-) -只是MSI自动魔术。没有必要为此使用任何自定义操作。如果您的服务可执行文件按预期的方式运行,MSI是功能齐全和可靠的。
如果上面的让我链接到github上的类似示例不清楚的话。它更完整,更详细。
VBScript:我是在看到您处理服务之前写的。我将把它加进去:要调用一个没有函数的脚本,您可以尝试如下所示:
<!-- The VBScript file -->
<Binary Id='Sample.vbs' SourceFile='Sample.vbs' />
<!-- The Custom Action -->
<CustomAction Id='Sample.vbs' VBScriptCall='' BinaryKey='Sample.vbs'
Execute='immediate' Return='ignore'/>
<!-- And Insert Into Installation Sequence -->
<InstallExecuteSequence>
<Custom Action='Sample.vbs' After='AppSearch'/>
</InstallExecuteSequence>这应该适用于这样的脚本(Sample.vbs -没有函数,只是一个隐式主函数):
MsgBox(Session.Property("ProductName"))这里有一个关于VBScript自定义操作主题的答案:WIX安装程序从CustomAction执行vbscript。
发布于 2018-08-29 20:31:16
WiX IIS元素:如果这是所有的 IIS ,我将尽可能避免脚本和自定义操作,并使用WiX的内置IIS元素。这是可在github.com上获得。
寻找<iis:WebVirtualDir ... />等人。在这里找到WiX文档。我相信你应该能够完成你所需要的,而不需要太多的定制操作。
DISM.exe:Stropek自己在使用DISM.exe设置IIS的另一个示例源中使用自定义操作。不确定我是否会这样做(不过没有其他建议),但这是一个自定义操作和IIS的示例。
Need-For-Speed:有关您的安装性能问题。也许您需要禁止创建还原点并限制文件成本?引擎允许这个-参见下面的链接。不过,我怀疑它是否会非常有效。我想你的安装程序肯定有别的问题。超时问题?它可能与其他自定义操作、慢网络或其他问题有关。您能详细介绍一下部署场景吗?
无论如何,以下是一些有关加速MSI安装的一般文档。本质上,MSIFAS廷STALL属性是我推荐的唯一一个属性。DISABLEROLLBACK会引发真正的问题。
Logging:我通常建议安装开发人员启用默认详细的MSI日志记录 --如"Globally for all setups on a machine“部分所述,在需要时始终准备一个日志文件。它是为TEMP folder中的每个MSI操作使用一个随机名称创建的,您可以通过修改进行排序以获得最新的一个。日志文件可能会给出为什么安装速度慢的线索--只需确定到底发生了什么。抱歉,如果这只是显而易见的小事,而你已经设置好了。
手动日志文件创建
msiexec.exe /i C:\Path\Your.msi /L*v C:\Your.log解释MSI日志:解释日志文件有时是很困难的。以下是一些帮助解决此问题的链接的答案。
https://stackoverflow.com/questions/52070744
复制相似问题