2010-01-28 91 views
4

我是InstallShield的新手,并且继承了InstallScript项目。我大部分时间都在想办法解决大部分问题。不过,我希望在构建服务器时自动在我们的产品的每个版本上构建此项目。我有这个工作正常。但出于某种原因,我无法获得增加的版本号。从IsCmdBld.exe设置InstallShield 2009 InstallScript项目的版本

我使用命令:

IsCmdBld.exe -P <.ism location>
-L <some_path_variable>=<some_value>
-L <some_path_variable2>=<some_value2>

这工作。

然而,增加-y 1.2.3-y "1.2.3"-z Version=1.2.3-z Version="1.2.3"-z "Version=1.2.3"-z ProductVersion=1.2.3-z ProductVersion="1.2.3",或-z "ProductVersion=1.2.3".不起作用。

当我说,这是行不通的,我的意思是使用所产生的安装程序不会尝试做一个升级像它会如果我手动增加了产品属性表的版本字符串从里面的InstallShield。

有什么我失踪?我知道我没有提供太多的东西,只希望以前有人遇到过这个问题。另外,使用-c COMP开关不起作用。

任何想法赞赏。

回答

7

我相信IsCmdBld只支持通过ProductVersion属性MSI项目,但不适合的InstallScript项目。我相信你需要做这样的事情之前,调用IsCmdBld

set project = CreateObject("ISWiAuto15.ISWiProject") 
project.OpenProject "C:\test.ism" 
project.ProductVersion = "2.0.0" 
project.CloseProject 
set project = nothing 

或者,你可以以XML格式保存您的项目类型和使用XPath/XPoke以更新PropertyProductVersion。由于DTD,语法有点吓人,但它可以完成。

+0

是的,Acresso论坛中的某个人也将此路线发送给我。我正在做你的建议,除了在project.CloseProject之前调用project.SaveProject,并且我正在使用c#。但是,save调用会引发COMException。 = /我将最终确定导致此异常的原因。 – 2010-02-04 16:56:13

+1

检查您是否在执行project.OpenProject“c:\ test.ism”,为false,以便您可以修改该项目。 – Alonso 2010-02-10 06:32:11

+0

@Alonso是的,我是。问题在于原作者没有使用IS 2009。因此,在IS 2009中打开该项目并选择另存为...,然后更改几个指针即可解决问题。 – 2010-02-10 17:58:19

3

这是一个老问题,但我终于能够找出如何使它在命令行中为我工作,所以我想我会分享。我在项目中创建了一个路径变量(VersionNumber,在下面的示例中),并在“常规信息”部分中将产品版本设置为该路径变量。

然后你可以在命令行使用-l标志来设置它。

ISCmdBld.exe -p project.ism -l VersionNumber=1.1.0 
+0

它的工作原理,谢谢 – Jack 2017-01-17 02:16:58

相关问题