我在Visual Studio 2015中使用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 :(得分:0)
由于您提到了管理权限,我假设这不是每用户安装,并且INSTALLDIR通常位于每个计算机的位置。为了在操作期间获得所需的权限,您需要在系统上下文中调度它(或在系统上下文中提交)。但是,这样做将无法访问属性INSTALLDIR,因此您必须使用CustomActionData来检索它。
然后你可能会遇到一个不是由CScript或WScript托管的问题,所以对WScript方法的引用可能不起作用(我认为你的CreateObject("WScript.Shell")
没问题,但是使用{可以更好地实现它的使用{1}})。
请注意,我不建议使用VBScript自定义操作,因为它们容易出现异常故障。