我已经看到了许多自动化我的InstallShield构建的解决方案,但我遇到了每个问题。我正在使用InstallShield Professional 2013.抱歉这个冗长的问题,但是我对于解决问题的方向一无所知。
1)IsCmdBld.exe - 我有一个运行的脚本,并将构建我的安装程序。但是,当安装程序运行时,我收到一条显示"The System Administrator has set policies to prevent this installation"
的错误消息。我不确定为什么会发生这种情况,但如果我通过设计器构建安装程序,则不会收到相同的错误消息。编辑:这是我的命令(%guid%是我生成的用于设置产品代码的Guid):
for /f %%i in ('"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\uuidgen.exe"') do set guid=%%i
"C:\Program Files (x86)\InstallShield\2013 SP1 SAB\System\ISCmdBld.exe" -p "MyInstaller.ism" -r SingleImage -y "1.0.0.13" -z ProductCode=%guid%
2)InstallShield Automation Interface - 我已经对此进行了大量的示例和教程,但所有结果都是相同的。当我调用以下代码时:
var project = new ISWiAuto20.ISWiProject();
我收到此错误:
Unable to cast COM object of type 'System.__ComObject' to interface type
'ISWiAuto20.ISWiProject'. This operation failed because the QueryInterface call
on the COM component for the interface with IID '{872D23A7-C18D-468C-895D-1CF027E4FBB1}'
failed due to the following error: Library not registered.
(Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).
3)MsBuild.exe - 在我的InstallShield项目文件上运行MsBuild会产生此错误:
error NSB4025: The project file could not be loaded. Invalid character in the
given encoding. Line 1, position 1
答案 0 :(得分:5)
这些方法之间的选择(当它们全部工作时)在很大程度上取决于您尝试集成的构建系统。如果您使用批处理或makefile方法,IsCmdBld.exe可能是最简单的起点。如果您使用的是Visual Studio和TFS或MSBuild,那么您可能会有更多的运气,因为它会以构建系统可以理解的方式报告错误。 (除此之外,它们基本相似。)如果您需要在构建之前对项目进行调整,那么自动化层可以增加或替换其他方法。
但在你的情况下,你说他们都不行。你做了什么来诊断原因?以下是我为这些症状采取的第一步:
C:\Windows\SysWow64\CScript.exe
。<InstallShield>\Support\0409\MSBuild.xml
复制到(ProjectName).isproj
并调整其内容;在生成的.isproj文件上调用MSBuild。赔率很高,这与IsCmdBuild的结果大致相同,因为构建部分主要是共享的。答案 1 :(得分:0)
使用MSBuild不遵循解决方案.sln文件中指定的Project文件的确切顺序。
最好的选择是使用devenv.exe
有时,devenv没有返回确切的返回状态,所以我保留了一个exe来扫描日志文件以获取成功代码。
https://devopsdiaryblog.wordpress.com/2017/12/20/devenv-return-code-issue/
对于iscmdbuild.exe,最好使用命令行,因为它是来自flexera的建议。