PDA

Vollständige Version anzeigen : nach Setup programm starten


Lenee
11.03.2014, 08:23
Hallo,

nachdem ich teile meiner Datenbank fertig habe wollte ich mir eine Installationsprogramm basteln, damit ich es einfacher habe um die Daten von einem zu anderen rechner zu transportieren. Das ganze versuche ich mit Inno Setup.

Nun zu meinem eigentlichen Problem:

ich wollte das ein Script nach der Installation Startet wenn ich ein markiere.
so weit so gut das mit dem markieren und einbinden war kein Problem

nur wenn das script startet bekomm ich die Fehlermeldung

"CreateProcess schlug fehl; Code 193. %1 ist keine zulässige win32-anwendung"


Code von Innosetup sieht so aus:

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "bestellung"
#define MyAppVersion "285"
#define MyAppExeName "Bestellung2.85.mdb"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{114F7C9E-A707-4DB2-83D1-D3E932D75D72}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName=D:\bestellung2
DisableDirPage=yes
DefaultGroupName={#MyAppName}
OutputDir=C:\Users\d.boose\Desktop
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "german"; MessagesFile: "compiler:Languages\German.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\Datenbank\Setup\Bestellung2.85.mdb"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Datenbank\Setup\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: shellexec postinstall skipifsilent
Filename: "{app}\TrustedLocations.vbs"; Description: "{cm:LaunchProgram,Sicherheitszertifizierung bei erstinstallation notwendig }"; Flags: nowait postinstall skipifsilent




folgendes Script soll danach ausgeführt werden:

Dim sh
Dim Ordner
Dim OrdnerS
Dim Title
Dim Return
Dim ReturnM

On Error Resume Next
Title = "Vertrauenswürdige Speicherorte für MyApplication einrichten"
Set sh = CreateObject("Shell.Application")

MsgBox "Vor Inbetriebnahme der Datenbankanwendung müssen einige" & vbCrLf & vbCrLf & _
"Sicherheitseinstellungen vorgenommen werden." & vbCrLf & vbCrLf & vbCrLf & _
"Bitte Anwendungsverzeichnis auswählen", vbOKOnly, Title
Set Ordner = sh.BrowseForFolder(0, "Anwendungsverzeichnis auswählen", 0)
OrdnerS = Ordner.Self.Path & "\"
If Len("" & OrdnerS) > 0 Then
Return = TLPath(OrdnerS, "My_App")
If Return Then ReturnM = vbCrLf & "Anwendungsverzeichnis"
End if


ReturnM = Mid(ReturnM, 3)

MsgBox "Einrichtung der vertrauenswürdigen Speicherorte abgeschlossen" & vbCrLf & vbCrLf & _
"Eintragungen sind erfolgt für" & vbCrLf & ReturnM, vbOKOnly, Title
Set sh = Nothing


Function TLPath(MyPath, MyValue)
Dim ws
Dim sP
Dim sD
Dim hP
Dim ret
Dim i

On Error Resume Next
TLPath = False
i = 0
Set ws = CreateObject("WScript.Shell")

If MyValue = "MyF_Data" Then
hP = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Security\"
ret = ws.RegRead(hP & "VBAWarnings")
If ret = "" Or ret <> 1 Then ws.RegWrite hP & "VBAWarnings", "00000001", "REG_DWORD"
End If
hP = "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Access\Security\Trusted Locations\"
If MyValue = "MyF_Data" Then
ret = ws.RegRead(hP & "AllowNetworkLocations")
If ret = "" Or ret <> 1 Then ws.RegWrite hP & "AllowNetworkLocations", "00000001", "REG_DWORD"
End If

Do While 1 = 1
sP = ""
sP = ws.RegRead(hP & "Location" & i & "\Path")
sD = ws.RegRead(hP & "Location" & i & "\Description")
If sP = MyPath And sD = MyValue Then
Exit Function
End if
If sP = "" Then
Exit Do
End if
i = i + 1
Loop

ws.RegWrite hP & "Location" & i & "\Path", MyPath
ws.RegWrite hP & "Location" & i & "\Description", MyValue
ws.RegWrite hP & "Location" & i & "\Date", Now
ws.RegWrite hP & "Location" & i & "\AllowSubfolders", "00000001", "REG_DWORD"

TLPath = True
End Function

kann man das eventuel automatisch im Hintergrund ausführen lassen?



grüße Daniel