2

我正在编写一个自定义脚本来与我的安装程序一起使用,以便用户可以根据需要选择安装工具栏。这是布局的样子:

http://i47.tinypic.com/2v92csl.png

以及随附的代码:

' Set Executable
Set WshShell = CreateObject("WScript.Shell") 
' Set booleans for what features to enabled/disable
Dim Feature1 As Boolean
Dim Feature2 As Boolean
Dim Feature3 As Boolean
Dim Feature4 As Boolean
Feature1 = False
Feature2 = False
Feature3 = False
Feature4 = False

If Session.Property("RADIO") = "RadioFeatureA" Then
  Feature1 = True
  Feature2 = False
ElseIf Session.Property("RADIO") = "RadioFeatureB" Then
  Feature2 = True
  Feature1 = False
End If

' Set the checkbox1 feature if ticked
If Session.Property("CHECK1") = "install" Then 
  Feature3 = True
Else
  Feature3 = False
End If

' Set the checkbox2 feature if ticked
If Session.Property("CHECK2") = "install" Then
  Feature4 = True
Else
  Feature4 = False
End If

' Execute the file
If Feature1 = True Then
  WshShell.Run (""APPDIR\file.exe"" /SILENT /INSTALL)
ElseIf Feature2 = True And Feature3 = True Then
  WshShell.Run (""APPDIR\file.exe"" /SILENT)
ElseIf Feature2 = True And Feature4 = True Then
  WshShell.Run (""APPDIR\file.exe"" /SILENT)
ElseIf Feature2 = True And Feature3 = True And Feature4 = True Then
  WshShell.Run (""APPDIR\file.exe"" /SILENT /INSTALL)
End If

但是由于某种原因,安装程序崩溃了。代码对我来说看起来不错并在外部执行?

4

1 回答 1

2

我怀疑当您尝试启动 exdcutables 时会发生崩溃。原因可能多种多样,例如 UAC 权利。但是引起我注意的是您如何使用 APPDIR 属性。您应该首先在一个单独的变量中获取它的值,然后附加。变量的可执行文件名称以获得正确的路径。

但是,这仍然不起作用,因为我假设您使用由 MSI 对话框上的操作触发的已发布事件启动脚本,即在安装文件之前,因此您的可执行文件不可用。

从屏幕截图中,我假设您使用的是Advanced Installer,因此您有两个选项可以解决您的问题:

  1. 您可以从文件视图中删除文件并再次添加它们,这次使用“添加临时”文件选项,这将使它们在所需时间可用。临时文件还附加了一个独特的属性,因此您可以使用它来获取它们的路径,而无需构建它。
  2. 您可以将设置添加为基于功能的先决条件,然后转到组织页面并使用您的属性设置其功能的安装条件。由于通常功能的安装条件不支持使用从 MSI 对话框设置的属性,您需要从对话框的“下一步”按钮调用预定义的自定义操作“更新功能状态”,因此功能状态和安装条件需要重新设置评估。通过这种方式,您可以消除也不建议使用的脚本,防病毒软件可以标记您的安装程序,vbscript 引擎可能无法在用户计算机上运行,​​等等...
于 2012-07-20T17:03:31.227 回答