2016-12-28 62 views
0

在我的soltuion VS中,我有一个C#项目和一个InstallShield项目。我如何从我的主项目中获得InstallShield项目的产品版本C#

我想获得该产品的InstallShield的版本:

enter image description here

但是从我的C#项目是这样的:

string Version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); 

但它的大会版本,而不是的InstallShield的产品版本。

可以使用新的参考COM:的InstallShield 22自动化接口

与此代码

var ISObject = new ISWiAuto22.ISWiProject(); 
ISObject.OpenProject(@strPath); 
var version = ISObject.ProductVersion; 

但是随着的InstallShield Limtied版,我们不能做到这一点。使用OpenProject,项目文件必须是.ism,我的是.isl,所以我得到一个错误:*此项目是使用以前版本的InstallShield Developer,InstallShield - Windows Installer或InstallShield Express创建的。*

+0

,你想在生成过程中,或者您已安装并运行产品之后做到这一点? –

回答

1

您可以使用InstallShield的COM接口来解析IS项目文件。

VBS例如:

Public Sub UpdateInstallerProductCode(strPath, strProductCode) 
Dim objISWiProject 

' Load InstallShield project 
Set objISWiProject = CreateObject("ISWiAuto19.ISWiProject") 
objISWiProject.OpenProject strPath 

' Set new product code 
objISWiProject.ProductCode = "{" & strProductCode & "}" 

' Save and close InstallShield project 
objISWiProject.SaveProject 
objISWiProject.CloseProject 
Set objISWiProject = Nothing 
End Sub 

我恨VB/S :))

+0

我马上看它! –

+0

它不起作用,我让你看看我顶部的帖子:/ –

+0

对不起,我粗心大意。是的,在我的电脑上我甚至无法创建新的ISWiAuto22.ISWiProject(); ,我一次有COM异常。 LE版本中不存在命令行。我建议手动解析ISL文件,如果您只需要获取产品版本,则不是那么复杂。 –

相关问题