2016-03-07 17 views
0

结束不执行我在Visual Studio 2015年的VBScript在安装

创建使用InstallShield的安装包,我还创建了应该在安装后运行的脚本。

下面是这个脚本的代码(对不起,意大利注释):

'Recupero la proprietà INSTALLDIR 
Dim curfolder 
curfolder = Session.Property("INSTALLDIR") 


'CREO LA CARTELLA DB 
Dim oFSO, objFolder 
Set oFSO = CreateObject("Scripting.FileSystemObject") 

If (oFSO.FileExists(curfolder & "\DB\EnercomContext.sdf")) Then 

    'Cancello il Database dalla cartella dell'installer 
    oFSO.DeleteFolder(curfolder & "\Database") 

Else 

    Dim WshShell 

    'Copio L'icona nella directory windows 
    Set WshShell = CreateObject ("WScript.Shell") 
    WshShell.Run ("xcopy """ & curfolder & "\Icon\icona_enercom.ico""" & " " & """C:\Windows\icona_enercom.ico""") 

    'Creo la cartella 
    Set objFolder = oFSO.CreateFolder(curfolder + "\DB") 

    'Sposto il File di DB all'interno della cartella 
    oFSO.MoveFile curfolder & "\Database\EnercomContext.sdf", curfolder & "\DB\EnercomContext.sdf" 

    oFSO.DeleteFolder(curfolder & "\Database") 

End If 

的问题是,即使它在正确的InstallShield引用不执行这个脚本。我试过在Windows 10 PC上进行安装,安装程序要求我提供管理权限。

任何建议为什么脚本不工作?

回答

0

由于您提到了管理权限,我假设这不是每个用户的安装,并且INSTALLDIR通常位于每台计算机的位置。为了在您的操作中获得所需的权限,您需要在系统上下文中延迟(或在系统上下文中提交)。但是,这样做会失去对INSTALLDIR的访问权限,因此您必须使用CustomActionData来检索它。

然后,您可能会遇到一个问题,您不是由CScript或WScript托管的,因此对WScript方法的引用可能不起作用(我认为您的CreateObject("WScript.Shell")可以,但使用FileSystemObject可能更好)。

请注意,我不建议使用VBScript自定义操作,因为它们很容易出现异常故障。

相关问题