BootstrapAdmin/Scripts/Publish.vbs

124 lines
3.9 KiB
Plaintext

Option Explicit
Dim fso, shell
Dim targetDir, targetName, extName, keyFile, destDir, solutionDir, cmd, file, assemblyDir, outDir, batFile, signCmd
Dim msg(), m
keyFile = "..\Keys\Longbow.Utility.snk"
destDir = "Publish\Web-App\WebConsole"
assemblyDir = "C:\Longbow.Utility 2005\Release"
batFile = "..\Scripts\LgbSign.bat"
signCmd = "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\sn.exe"
Set shell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count > 0 Then
targetDir = WScript.Arguments(0)
End If
If WScript.Arguments.Count > 1 Then
targetName = WScript.Arguments(1)
End If
If WScript.Arguments.Count > 2 Then
extName = WScript.Arguments(2)
End If
If WScript.Arguments.Count > 3 Then
solutionDir = WScript.Arguments(3)
keyFile = solutionDir & keyFile
destDir = solutionDir & destDir
batFile = solutionDir & batFile
End If
If WScript.Arguments.Count > 4 Then
outDir = WScript.Arguments(4)
End If
If WScript.Arguments.Count > 5 Then
If WScript.Arguments(5) = "Debug" Then
ReSignFile targetDir & targetName & extName
WScript.Echo WScript.Arguments(5) & " Mode... Quit copy AFTER Re-signed assembly"
WScript.Quit
Else
If extName = ".dll" Then
WScript.Echo WScript.Arguments(5) & " Mode... Quit copy BEFORE Re-signed assembly"
WScript.Quit
End If
End If
End If
destDir = destdir & targetName & "\"
If NOT fso.FolderExists(destDir) then
fso.CreateFolder(destDir)
End If
If NOT fso.FolderExists(destdir & "Original\") then
fso.CreateFolder(destdir & "Original\")
End If
If extName = ".exe" Then
CopyFile fso, targetDir, destDir, targetName & extName & ".config", true
End If
CopyFile fso, targetDir, destdir & "Original\", targetName & extName, true
ReDim msg(0)
msg(0) = """" & batFile & """ """ & destdir & targetName & extName & """ """ & keyFile
For Each file in fso.GetFolder(targetDir).Files
If fso.GetExtensionName(file) = "dll" then
If NOT CopyFile(fso, assemblyDir, destDir, file.Name, false) Then
ReDim Preserve msg(UBound(msg)+1)
msg(UBound(msg)) = """" & signCmd & """ """ & destdir & file.Name & """"
CopyFile fso, solutionDir & GetFileName(file.Name) & "\" & outDir, destDir & "Original\", file.Name, true
ReSignFile targetdir & file.Name
Else
CopyFile fso, assemblyDir, destDir & "Original\", file.Name, true
End If
End If
Next
ReSignFile targetDir & targetName & extName
Wscript.Echo "Ready for DotFuscator... After Dotfuscator run the following command Please!"
For Each m in msg
Wscript.Echo m
Next
Function CopyFile(fso, targetDir, destDir, targetName, show)
If fso.FileExists(targetDir & targetName) then
fso.CopyFile targetDir & targetName, destDir & targetName, True
Wscript.Echo targetDir & targetName & " --> " & destDir & targetName & " Copied!"
CopyFile = True
Else
If show then
Wscript.Echo "Missing " & targetDir & targetName & " Not Copied!"
end if
CopyFile = False
End If
End Function
Function GetFileName(fileName)
Dim pos, index
index = 1
Do
pos = index + 1
index = InStr(pos, fileName, ".")
Loop while index > 0
If pos > 0 Then
GetFileName = Left(fileName, pos -2)
Else
GetFileName = fileName
End If
End Function
Sub ReSignFile(fileName)
If Not fso.FileExists(shell.ExpandEnvironmentStrings(signCmd)) Then
signCmd = "%ProgramFiles(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\sn.exe"
End If
cmd = """"& signCmd &""" -R """ & fileName & """ " & keyFile
shell.run cmd, 0, True
WScript.Echo "Assembly '" & fileName & "' successfully re-signed @_@"
End Sub