Hallo zusammen ich habe nun mein update-Programm soweit fertig. Der Download der updatedatei erfolgreich, und nun starte ich das Programm folgendermaßen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54:
| class SHELLEXECUTEEX { public UInt32 cbSize; public UInt32 fMask; public IntPtr hwnd; public IntPtr lpVerb; public IntPtr lpFile; public IntPtr lpParameters;
[MarshalAs(UnmanagedType.LPTStr)] public string lpDirectory;
public int nShow; public IntPtr hInstApp;
public IntPtr lpIDList; public IntPtr lpClass; public IntPtr hkeyClass; public UInt32 dwHotKey; public IntPtr hIcon; public IntPtr hProcess; }
string docname = GetCurrentDirectory() + @"update.cab"; int nSize = docname.Length * 2 + 2; IntPtr pData = LocalAlloc(0x40, nSize); Marshal.Copy(Encoding.Unicode.GetBytes(docname), 0, pData, nSize - 2); SHELLEXECUTEEX see = new SHELLEXECUTEEX();
see.cbSize = 60; see.dwHotKey = 0; see.fMask = 0; see.hIcon = IntPtr.Zero; see.hInstApp = IntPtr.Zero; see.hProcess = IntPtr.Zero; ; see.lpClass = IntPtr.Zero; String dir = @"\Program Files" + @"\" + "mobileProg"+@"\"; see.lpDirectory = dir; see.lpIDList = IntPtr.Zero; see.lpParameters = IntPtr.Zero; see.lpVerb = IntPtr.Zero; see.nShow = 0; see.lpFile = pData;
try { ShellExecuteEx(see); } catch (Exception ex) {
}
LocalFree(pData); |
nun zu meinen Problem:
wenn ich dieses update laufen lasse erscheint die Meldung ob das update installiert werden soll. Damit kann ich noch leben aber danach kommt die Auswahl des Installationsverzeichnisses. Und das muss ich definitv unterbinden können.
Kann ich beim erstellen der update.cab irgendwelche Parameter noch einstellen[VS2008] das er automatisch ein vorgegebenes Verzeichnis übernimmt ? Oder mache ich beim Aufruf des updates einen Fehler?
Moderiert von
Kha: Code- durch C#-Tags ersetzt