Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Kompatibilitätsmanger unter Windows 7 meckert, dass das Programm nicht richtig installiert sei.

30 views
Skip to first unread message

Sven Hansen

unread,
Feb 18, 2010, 7:04:52 AM2/18/10
to
Hi NG,

um vom Hauptprogramm Module nachinstallieren zu k�nnen, habe ich ein kleines
Win32 (hat nur Winmain, ohne MFC) geschrieben, welches Administratorrechte
hat und das Kopieren der Dateien �bernimmt. Es wird vom Hauptprogramm
gestartet.

Nun wird unter Windows 7 der Kompatibilit�tsmanger ge�ffnet und gesagt, dass
das Programm eventuell nicht richtig installiert sei.

Man kann dann anklicken "Ist kompatibel" und alles ist "gut".

Nur w�rde ich gerne verhindern, dass diese Meldung �berhaupt kommt.

Der Kompatibilit�tsmanger macht hier einen Eintrag:
HKEY_CURRENT_USER\Software\Microsoft\Windows
NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted

Ich denke nicht, dass ich hier etwas per Software setzen sollte. Wei�
jemand, wo ich was tun muss, damit diese Meldung nicht erscheint?

Besten Dank im Voraus.

Gru�
Sven


Martin Richter [MVP]

unread,
Feb 18, 2010, 9:35:07 AM2/18/10
to
Hallo Sven!

> um vom Hauptprogramm Module nachinstallieren zu kᅵnnen, habe ich ein kleines

> Win32 (hat nur Winmain, ohne MFC) geschrieben, welches Administratorrechte

> hat und das Kopieren der Dateien ᅵbernimmt. Es wird vom Hauptprogramm
> gestartet.

Hat das Programm ein RequireAdmin Manifest?

--
Martin Richter [MVP] WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written
program is its own hell!" The Tao of Programming
FAQ: http://www.mpdvc.de Samples: http://www.codeproject.com

Sven Hansen

unread,
Feb 18, 2010, 10:20:29 AM2/18/10
to
Hallo Martin,

> Hat das Programm ein RequireAdmin Manifest?

Ja, das wurde in VC++ 2008 in den Release-Eigenschaftsseiten eingestellt
(unter Linker/Manifestdatei):
UAC- Ausf�hrungsebene: requireAdministrator.
Auch die entsprechende eingebettet Resource zeigt dies an. Alle anderen
Release-Eigenschaften wurden so belassen.

Es funktuioniert ja auch. UAC meldet sich und die Dateien werden nach
Erlaubnis korrekt kopiert.

Nach korrekter Beendigung des Programms kommt erst dieser Hinweis!

Das Program selbst ist kaum mehr als:
int _tWinMain(...)
{
CopyFile(...);
return 0;
}

Gru�
Sven


Jochen Kalmbach [MVP]

unread,
Feb 18, 2010, 10:34:30 AM2/18/10
to
Hallo Sven!

> Nach korrekter Beendigung des Programms kommt erst dieser Hinweis!

Ich vermute mal dass Programm heisst so, wie es nicht heissen darf ;)

Das sind die bᅵsen Shims.... benenn es mal um und probiere es nochmals ;)


Siehe auch:
http://blog.kalmbach-software.de/2009/06/09/custom-installer-without-warning-dialog-trustedinstallerexe/


--
Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/

Sven Hansen

unread,
Feb 18, 2010, 11:29:27 AM2/18/10
to
Hallo Jochen,

> Ich vermute mal dass Programm heisst so, wie es nicht heissen darf ;)
>

> Das sind die b�sen Shims.... benenn es mal um und probiere es
> nochmals ;)

Das war's :-)
Im Namen kam "install" vor. Da w�re ich nie drauf gekommen.

Gru� und Dank
Sven

Stefan Binder

unread,
Feb 19, 2010, 3:37:00 AM2/19/10
to
Hallo Sven!

>> Ich vermute mal dass Programm heisst so, wie es nicht heissen darf ;)
>>

>> Das sind die bösen Shims.... benenn es mal um und probiere es


>> nochmals ;)
>
> Das war's :-)

> Im Namen kam "install" vor. Da wäre ich nie drauf gekommen.

Ich hatte einen ähnlichen Fall, mit dem Unterschied, das mein Programm
keine Admin Rechte benötigt.

Bei mir reichte es allerdings ein Standard Manifest einzubetten. Ich hab
weder signiert, noch "update" aus der Filedescription genommen.


Das die UAC Abfrage bei deinem Programm kam, muss nichts mit dem (deiner
Aussage nach) vorhandenem Manifest zu tun haben.
Denn diese Shims bewirken ja genau dieses Prompt für Programme die kein
Manifest haben, aber auf die die Setup/Update Erkennung anschlägt.

Schau mal die exe selbst an ob ein manifest drinnen ist.

Was bei mir auch nicht der Fall war ist die Rückfrage ob richtig
installiert wurde. Da hab ich keine Ahnung wann das anschlägt.

--
lg
stefan binder

Martin Richter [MVP]

unread,
Feb 19, 2010, 3:53:23 AM2/19/10
to
Hallo Jochen!

> Ich vermute mal dass Programm heisst so, wie es nicht heissen darf ;)
>
> Das sind die bᅵsen Shims.... benenn es mal um und probiere es nochmals ;)
>
> Siehe auch:
> http://blog.kalmbach-software.de/2009/06/09/custom-installer-without-warning-dialog-trustedinstallerexe/

Ich verstehe nicht warum diese Shims greifen obwohl Manifeste vorhanden
sind...

Demnᅵchst nennt man ein Programm aus diesem Grund InstHelper.exe oder
UpdHelper.exe und alles ist OK. Dann wird der Shim geᅵndert und "inst*"
"upd*" wird auch abgefangen.

Das Spielt geht solange weiter, bis die Buchstaben U und I nurnoch fᅵr
Installer Programme reserviert werden ;)

Jochen Kalmbach [MVP]

unread,
Feb 19, 2010, 1:28:21 PM2/19/10
to
Hallo Martin!

> Ich verstehe nicht warum diese Shims greifen obwohl Manifeste vorhanden
> sind...

Ich verstehe nicht, warum sie NICHT greifen sollten?
Ich konnte keine Doku finden, wo Shim mit einem Manifest NICHT wirken
sollen... das ist mir ein Rᅵtsel woher Du diese Info hast...
Dann wᅵrde ja Shims gar keinen Sinn machen...

> Demnᅵchst nennt man ein Programm aus diesem Grund InstHelper.exe oder
> UpdHelper.exe und alles ist OK. Dann wird der Shim geᅵndert und "inst*"
> "upd*" wird auch abgefangen.

Genau... das ist die Taktik von MS ;)

> Das Spielt geht solange weiter, bis die Buchstaben U und I nurnoch fᅵr
> Installer Programme reserviert werden ;)

;)

Martin Richter [MVP]

unread,
Feb 19, 2010, 4:04:36 PM2/19/10
to
Hallo Jochen!

> Ich verstehe nicht, warum sie NICHT greifen sollten?
> Ich konnte keine Doku finden, wo Shim mit einem Manifest NICHT wirken
> sollen... das ist mir ein Rᅵtsel woher Du diese Info hast...
> Dann wᅵrde ja Shims gar keinen Sinn machen...

Ja und nein!

Aber wenn ich mein Programm InstallDocs nenne und irendwohin Dateien ins
User Verzeichnis kopiere und keinen Eintrag im Uninstall Bereich der
Registry mache, dann kommt gleich der Aufschrei von Windows "Das
Programm wurde nicht richtig installliert"...

Unfug in meinen Augen.
Solche Shims braucht kein Mensch... ;)

Stefan Binder

unread,
Feb 22, 2010, 5:02:32 AM2/22/10
to
Hallo Jochen!

>> Ich verstehe nicht warum diese Shims greifen obwohl Manifeste
>> vorhanden sind...
>
> Ich verstehe nicht, warum sie NICHT greifen sollten?

Also ich konnte genau das beobachten...
Eines meiner Tools das noch mit VS2003 ohne Manifest erstellt wurde,
hatte in der Description unter anderem "Update" stehen.

Dadurch kam die Aufforderung ob man es als Admin ausführen möchte, wenn
es per ShellExecute gestartet wurde.

Da muss ja also dieser Shim gewirkt haben, sonst wäre ja kein Elevation
Prompt gekommen (das Programm braucht keine Admin Rechte).


Dann hab ich das Programm mit VS2008 und dem Standardmanifest (also mit
AsInvoker) erstellt, und es kam kein Elevation Prompt, sondern alles
lief wie geschmiert.
Hab grad extra nochmal diffs angeguckt, und das Manifest war die einzige
Änderung!

> Ich konnte keine Doku finden, wo Shim mit einem Manifest NICHT wirken

> sollen... das ist mir ein Rätsel woher Du diese Info hast...
> Dann würde ja Shims gar keinen Sinn machen...

Ich hab die Shims bisher als Kompatibilitätskrücke für alte Anwendungen
verstanden.
Wenn ich ein Programm mit VS2005/08 erstelle, und ein Manifest dabei
habe, kenn ich ja die Anforderungen von (zumindest) Vista schon, und
brauch diese Krücke dafür nicht.

Du hast dich sicher mehr mit dem Thema beschäftigt als ich, aber wieso
reichte bei meinem Beispiel oben dann ein Manifest hinzuzufügen aus?


--
lg
stefan binder

Jochen Kalmbach [MVP]

unread,
Feb 22, 2010, 5:15:34 AM2/22/10
to
Hallo Stefan!

> Dann hab ich das Programm mit VS2008 und dem Standardmanifest (also mit
> AsInvoker) erstellt, und es kam kein Elevation Prompt, sondern alles
> lief wie geschmiert.
> Hab grad extra nochmal diffs angeguckt, und das Manifest war die einzige

> ᅵnderung!

Ja... es gibt wohl sowas... aber ich konnte noch keine Doku oder sontwas
finden, wo dies definiert wird...
Bzw. in den Shims konnte ich noch keinen Eintrag ausmachen der auf die
Manifeste achetet... aber man lernt ja immer wieder dazu...
Siehe auch:
http://blog.kalmbach-software.de/2010/02/22/the-shim-database/

> Ich hab die Shims bisher als Kompatibilitᅵtskrᅵcke fᅵr alte Anwendungen
> verstanden.

So kann man es sehen... aber man kann sie auch fᅵr neue Anwendungen
verwenden... sonst wᅵrde es ja auch kein Sinn machen, da die neuen
Anwendungen bald ja alt sind ;)

> Du hast dich sicher mehr mit dem Thema beschᅵftigt als ich, aber wieso
> reichte bei meinem Beispiel oben dann ein Manifest hinzuzufᅵgen aus?

Das frag ich mich ja auch ;)

Jochen Kalmbach [MVP]

unread,
Feb 22, 2010, 5:24:43 AM2/22/10
to
Hallo Stefan!
> Du hast dich sicher mehr mit dem Thema beschᅵftigt als ich, aber wieso
> reichte bei meinem Beispiel oben dann ein Manifest hinzuzufᅵgen aus?

PS: Das Verhalten ist bei mir so:

TestInstaller.exe: Ohne Manifeste
=> UAC-prompt
=> Installer-Dialog (wurde richtig installiert?)

TestInstaller.exe: Mit Manifeste und "requireAdministrator"
=> UAC-prompt
=> Installer-Dialog (wurde richtig installiert?)

TestInstaller.exe: Mit Manifeste und "asInvoker"
=> Installer-Dialog (wurde richtig installiert?)


Der "Installer-Dialog" lies sich bei mir nie unterdrᅵcken... die Frage
ist nur, wie kommt dieser Zustande... sind es die Shims oder etwas
anderes....

Sven Hansen

unread,
Feb 22, 2010, 5:31:33 AM2/22/10
to
Hallo Stefan,

> Schau mal die exe selbst an ob ein manifest drinnen ist.

Habe ich nat�rlich. Damit hatte das nichts zu tun. Das Programm arbeitete ja
auch einwandfrei. Bis auf den Hinweis nach der Ausf�hrung.

Nebenbeibemerkt:
Obwohl ich gestehen muss gerade erst mit VC2008 anzufangen und den
Klassenassistenten sehr vermisse. Das Hauptprogramm wurde mit VC6.0
geschrieben wegen Streik gegen Dot-Net :-)

> Was bei mir auch nicht der Fall war ist die R�ckfrage ob richtig
> installiert wurde. Da hab ich keine Ahnung wann das anschl�gt.

Wahrscheinlich wie Martin sagte, wenn unter "uninstall" kein Eintrag in der
Registry erfolgt.

Gru�
Sven


Stefan Binder

unread,
Feb 22, 2010, 6:55:12 AM2/22/10
to
Hallo Jochen!

> Der "Installer-Dialog" lies sich bei mir nie unterdrücken... die Frage


> ist nur, wie kommt dieser Zustande... sind es die Shims oder etwas
> anderes....

Dieser Dialog kam bei meiner App wiederum nie (also weder mit noch ohne
Manifest) :)

Ist aber wirklich ne minimal Anwendung, die als Aufrufparameter Files
bekommt, die es kopieren soll, und vorher prüft ob diese noch offen sind.
Falls sie offen sind, wird per Dialog aufgefordert sie zu schließen.

Das war schon alles was die "Anwendung" macht.


--
lg
stefan binder

Stefan Kuhr

unread,
Feb 22, 2010, 7:47:56 AM2/22/10
to
Hallo beisammen,

On 2/22/2010 11:02 AM, Stefan Binder wrote:
> <snip>


> Also ich konnte genau das beobachten...
> Eines meiner Tools das noch mit VS2003 ohne Manifest erstellt wurde,
> hatte in der Description unter anderem "Update" stehen.
>

> Dadurch kam die Aufforderung ob man es als Admin ausfᅵhren mᅵchte, wenn


> es per ShellExecute gestartet wurde.
>

> Da muss ja also dieser Shim gewirkt haben, sonst wᅵre ja kein Elevation


> Prompt gekommen (das Programm braucht keine Admin Rechte).
>


Ja, das habe ich auch beobachtet, das kann ich bestaetigen. Bei uns ist
"install" im Produktnamen und daher war dieser String Teil der
Versionsinforessource. Die Folge war, dass unter Windows 7, zumindest
einem RC davon (mit Windows 7 RTM habe ich das noch nicht getestet),
immer die Rueckfrage kam nach Beenden des Programms, ob die Installation
erfolgreich durchgelaufen ist. Die Binaries hatten Manifeste und nur mit
Ausschliessen der Binaries aus den Shims liess sich das nervige
Rueckfragen abstellen. Ich werde irgendwann mal demnaechst testen, ob
das mit dem RTM auch so ist.

--
S

Jochen Kalmbach [MVP]

unread,
Feb 22, 2010, 8:00:52 AM2/22/10
to
Hallo Stefan!

> Die Binaries hatten Manifeste und nur mit
> Ausschliessen der Binaries aus den Shims liess sich das nervige
> Rueckfragen abstellen.

Kannst Du mir kurz verraten, WIE Du das gemacht hast?

Martin Richter [MVP]

unread,
Feb 22, 2010, 8:03:32 AM2/22/10
to
Hallo Stefan!


>> Der "Installer-Dialog" lies sich bei mir nie unterdrᅵcken... die Frage


>> ist nur, wie kommt dieser Zustande... sind es die Shims oder etwas
>> anderes....
>
> Dieser Dialog kam bei meiner App wiederum nie (also weder mit noch ohne
> Manifest) :)

Ich bekomme solch einen Prompt auch nicht. Mein Programm heiᅵt
Setup<productname>Client.exe

RequireAdmin Manifest und das wwar es. Es werden einige DLLs kopiert
(falls nᅵtig) und einige ActiveX Komponenten registriert.

Jochen Kalmbach [MVP]

unread,
Feb 22, 2010, 8:11:20 AM2/22/10
to
Hallo Martin!

>> Dieser Dialog kam bei meiner App wiederum nie (also weder mit noch
>> ohne Manifest) :)
>
> Ich bekomme solch einen Prompt auch nicht. Mein Programm heiᅵt
> Setup<productname>Client.exe
>
> RequireAdmin Manifest und das wwar es. Es werden einige DLLs kopiert
> (falls nᅵtig) und einige ActiveX Komponenten registriert.

Habe es gerade mit einem simplen Consolen-Programm probiert:
Also nur printf und mit requireAdministrator-Manifest:

Exe-Name: SetupTest.exe
=> Installer-Dialog kommt nach beenden des Programms...

OS: Win7-x64; Programm ist x86

Stefan Kuhr

unread,
Feb 22, 2010, 8:05:22 AM2/22/10
to
Hi Jochen,

On 2/22/2010 2:00 PM, Jochen Kalmbach [MVP] wrote:
> Hallo Stefan!
>> Die Binaries hatten Manifeste und nur mit Ausschliessen der Binaries
>> aus den Shims liess sich das nervige Rueckfragen abstellen.
>
> Kannst Du mir kurz verraten, WIE Du das gemacht hast?
>

Einfuegen des Pfads zur Exedatei unter
HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows
NT\\CurrentVersion\\\\AppCompatFlags\\Compatibility Assistant in den
MultiSZ-Value "ExecutablestoExclude".

--
S

Jochen Kalmbach [MVP]

unread,
Feb 22, 2010, 8:20:14 AM2/22/10
to
Hallo Stefan!

> Einfuegen des Pfads zur Exedatei unter
> HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows
> NT\\CurrentVersion\\\\AppCompatFlags\\Compatibility Assistant in den
> MultiSZ-Value "ExecutablestoExclude".

Ja, jetzt fᅵllt es mir wieder ein...

Jochen Kalmbach [MVP]

unread,
Feb 22, 2010, 8:24:00 AM2/22/10
to
Hallo Sven!

> Ich denke nicht, dass ich hier etwas per Software setzen sollte. Weiᅵ

> jemand, wo ich was tun muss, damit diese Meldung nicht erscheint?

Hier steht ᅵbrigens etwas ᅵber das Feature:
http://msdn.microsoft.com/en-us/library/bb756937.aspx

<quote>
It monitors a program detected as setup by Windows Vista and Windows
Server 2008 and checks whether the program registers an entry in Add or
Remove Programs (ARP). If no entries are created in ARP, PCA concludes
that the installer did not complete successfully. It will then wait for
the install program to terminate before displaying the UI. If it is an
uninstaller, the detection looks for whether an entry was deleted from ARP.
</quote>

Stefan Kuhr

unread,
Feb 22, 2010, 8:18:37 AM2/22/10
to
Hi Jochen,

On 2/22/2010 2:20 PM, Jochen Kalmbach [MVP] wrote:
> Hallo Stefan!
>
>> Einfuegen des Pfads zur Exedatei unter
>> HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows
>> NT\\CurrentVersion\\\\AppCompatFlags\\Compatibility Assistant in den
>> MultiSZ-Value "ExecutablestoExclude".
>
> Ja, jetzt fᅵllt es mir wieder ein...
>

Wir hatten's davon Anfang November auf der TechEd :-)

--
S

Stefan Kuhr

unread,
Feb 23, 2010, 5:27:25 AM2/23/10
to
Hallo beisammen,

On 2/22/2010 1:47 PM, Stefan Kuhr wrote:
>
> <snip>


> Ja, das habe ich auch beobachtet, das kann ich bestaetigen. Bei uns ist
> "install" im Produktnamen und daher war dieser String Teil der
> Versionsinforessource. Die Folge war, dass unter Windows 7, zumindest
> einem RC davon (mit Windows 7 RTM habe ich das noch nicht getestet),
> immer die Rueckfrage kam nach Beenden des Programms, ob die Installation
> erfolgreich durchgelaufen ist. Die Binaries hatten Manifeste und nur mit
> Ausschliessen der Binaries aus den Shims liess sich das nervige
> Rueckfragen abstellen. Ich werde irgendwann mal demnaechst testen, ob
> das mit dem RTM auch so ist.
>

Es ist mit dem RTM genau gleich.

--
S

Timo Boehme

unread,
Feb 28, 2012, 3:32:03 AM2/28/12
to
Quick and dirty solution f?r meine VB6 Anwendung. Sie heisst: NetSetup und installiert das DotNet Framework :-)

If StartService = True Then'programmstart
Res = ShellExecute(0, "OPEN", "Net", "Start PcaSvc", ApPath, ShowFlag)
Else'bei Programm Ende
Res = ShellExecute(0, "OPEN", "Net", "Stop PcaSvc", ApPath, ShowFlag)
End If

> On Thursday, February 18, 2010 7:04 AM Sven Hansen wrote:

> Hi NG,
>
> um vom Hauptprogramm Module nachinstallieren zu können, habe ich ein kleines
> Win32 (hat nur Winmain, ohne MFC) geschrieben, welches Administratorrechte
> hat und das Kopieren der Dateien übernimmt. Es wird vom Hauptprogramm
> gestartet.
>
> Nun wird unter Windows 7 der Kompatibilitätsmanger geöffnet und gesagt, dass
> das Programm eventuell nicht richtig installiert sei.
>
> Man kann dann anklicken "Ist kompatibel" und alles ist "gut".
>
> Nur würde ich gerne verhindern, dass diese Meldung überhaupt kommt.
>
> Der Kompatibilitätsmanger macht hier einen Eintrag:
> HKEY_CURRENT_USER\Software\Microsoft\Windows
> NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
>
> Ich denke nicht, dass ich hier etwas per Software setzen sollte. Weiß
> jemand, wo ich was tun muss, damit diese Meldung nicht erscheint?
>
> Besten Dank im Voraus.
>
> Gruß
> Sven


>> On Thursday, February 18, 2010 9:35 AM Martin Richter [MVP] wrote:

>> Hallo Sven!
>>
>>
>> Hat das Programm ein RequireAdmin Manifest?
>>
>> --
>> Martin Richter [MVP] WWJD http://blog.m-ri.de
>> "A well-written program is its own heaven; a poorly written
>> program is its own hell!" The Tao of Programming
>> FAQ: http://www.mpdvc.de Samples: http://www.codeproject.com


>>> On Thursday, February 18, 2010 10:20 AM Sven Hansen wrote:

>>> Hallo Martin,
>>>
>>>
>>> Ja, das wurde in VC++ 2008 in den Release-Eigenschaftsseiten eingestellt
>>> (unter Linker/Manifestdatei):
>>> UAC- Ausführungsebene: requireAdministrator.
>>> Auch die entsprechende eingebettet Resource zeigt dies an. Alle anderen
>>> Release-Eigenschaften wurden so belassen.
>>>
>>> Es funktuioniert ja auch. UAC meldet sich und die Dateien werden nach
>>> Erlaubnis korrekt kopiert.
>>>
>>> Nach korrekter Beendigung des Programms kommt erst dieser Hinweis!
>>>
>>> Das Program selbst ist kaum mehr als:
>>> int _tWinMain(...)
>>> {
>>> CopyFile(...);
>>> return 0;
>>> }
>>>
>>> Gruß
>>> Sven


>>>> On Thursday, February 18, 2010 10:34 AM Jochen Kalmbach [MVP] wrote:

>>>> Hallo Sven!
>>>>
>>>>
>>>> Ich vermute mal dass Programm heisst so, wie es nicht heissen darf ;)
>>>>
>>>> Das sind die b?sen Shims.... benenn es mal um und probiere es nochmals ;)
>>>>
>>>>
>>>> Siehe auch:
>>>> http://blog.kalmbach-software.de/2009/06/09/custom-installer-without-warning-dialog-trustedinstallerexe/
>>>>
>>>>
>>>> --
>>>> Greetings
>>>> Jochen
>>>>
>>>> My blog about Win32 and .NET
>>>> http://blog.kalmbachnet.de/


>>>>> On Thursday, February 18, 2010 11:29 AM Sven Hansen wrote:

>>>>> Hallo Jochen,
>>>>>
>>>>>
>>>>> Das war's :-)
>>>>> Im Namen kam "install" vor. Da wäre ich nie drauf gekommen.
>>>>>
>>>>> Gruß und Dank
>>>>> Sven


>>>>>> On Friday, February 19, 2010 3:37 AM Stefan Binder wrote:

>>>>>> Hallo Sven!
>>>>>>
>>>>>>
>>>>>> Ich hatte einen =E4hnlichen Fall, mit dem Unterschied, das mein Programm =
>>>>>>
>>>>>> keine Admin Rechte ben=F6tigt.
>>>>>>
>>>>>> Bei mir reichte es allerdings ein Standard Manifest einzubetten. Ich hab =
>>>>>>
>>>>>> weder signiert, noch "update" aus der Filedescription genommen.
>>>>>>
>>>>>>
>>>>>> Das die UAC Abfrage bei deinem Programm kam, muss nichts mit dem (deiner =
>>>>>>
>>>>>> Aussage nach) vorhandenem Manifest zu tun haben.
>>>>>> Denn diese Shims bewirken ja genau dieses Prompt f=FCr Programme die kein=
>>>>>> =20
>>>>>> Manifest haben, aber auf die die Setup/Update Erkennung anschl=E4gt.
>>>>>>
>>>>>> Schau mal die exe selbst an ob ein manifest drinnen ist.
>>>>>>
>>>>>> Was bei mir auch nicht der Fall war ist die R=FCckfrage ob richtig=20
>>>>>> installiert wurde. Da hab ich keine Ahnung wann das anschl=E4gt.
>>>>>>
>>>>>> --=20
>>>>>> lg
>>>>>> stefan binder


>>>>>>> On Friday, February 19, 2010 3:53 AM Martin Richter [MVP] wrote:

>>>>>>> Hallo Jochen!
>>>>>>>
>>>>>>>
>>>>>>> Ich verstehe nicht warum diese Shims greifen obwohl Manifeste vorhanden
>>>>>>> sind...
>>>>>>>
>>>>>>> Demn?chst nennt man ein Programm aus diesem Grund InstHelper.exe oder
>>>>>>> UpdHelper.exe und alles ist OK. Dann wird der Shim ge?ndert und "inst*"
>>>>>>> "upd*" wird auch abgefangen.
>>>>>>>
>>>>>>> Das Spielt geht solange weiter, bis die Buchstaben U und I nurnoch f?r
>>>>>>> Installer Programme reserviert werden ;)
>>>>>>>
>>>>>>> --
>>>>>>> Martin Richter [MVP] WWJD http://blog.m-ri.de
>>>>>>> "A well-written program is its own heaven; a poorly written
>>>>>>> program is its own hell!" The Tao of Programming
>>>>>>> FAQ: http://www.mpdvc.de Samples: http://www.codeproject.com


>>>>>>>> On Friday, February 19, 2010 1:28 PM Jochen Kalmbach [MVP] wrote:

>>>>>>>> Hallo Martin!
>>>>>>>>
>>>>>>>>
>>>>>>>> Ich verstehe nicht, warum sie NICHT greifen sollten?
>>>>>>>> Ich konnte keine Doku finden, wo Shim mit einem Manifest NICHT wirken
>>>>>>>> sollen... das ist mir ein R?tsel woher Du diese Info hast...
>>>>>>>> Dann w?rde ja Shims gar keinen Sinn machen...
>>>>>>>>
>>>>>>>>
>>>>>>>> Genau... das ist die Taktik von MS ;)
>>>>>>>>
>>>>>>>>
>>>>>>>> ;)
>>>>>>>>
>>>>>>>> --
>>>>>>>> Greetings
>>>>>>>> Jochen
>>>>>>>>
>>>>>>>> My blog about Win32 and .NET
>>>>>>>> http://blog.kalmbachnet.de/


>>>>>>>>> On Friday, February 19, 2010 4:04 PM Martin Richter [MVP] wrote:

>>>>>>>>> Hallo Jochen!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Ja und nein!
>>>>>>>>>
>>>>>>>>> Aber wenn ich mein Programm InstallDocs nenne und irendwohin Dateien ins
>>>>>>>>> User Verzeichnis kopiere und keinen Eintrag im Uninstall Bereich der
>>>>>>>>> Registry mache, dann kommt gleich der Aufschrei von Windows "Das
>>>>>>>>> Programm wurde nicht richtig installliert"...
>>>>>>>>>
>>>>>>>>> Unfug in meinen Augen.
>>>>>>>>> Solche Shims braucht kein Mensch... ;)
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Martin Richter [MVP] WWJD http://blog.m-ri.de
>>>>>>>>> "A well-written program is its own heaven; a poorly written
>>>>>>>>> program is its own hell!" The Tao of Programming
>>>>>>>>> FAQ: http://www.mpdvc.de Samples: http://www.codeproject.com


>>>>>>>>>> On Monday, February 22, 2010 5:02 AM Stefan Binder wrote:

>>>>>>>>>> Hallo Jochen!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Also ich konnte genau das beobachten...
>>>>>>>>>> Eines meiner Tools das noch mit VS2003 ohne Manifest erstellt wurde,=20
>>>>>>>>>> hatte in der Description unter anderem "Update" stehen.
>>>>>>>>>>
>>>>>>>>>> Dadurch kam die Aufforderung ob man es als Admin ausf=FChren m=F6chte, we=
>>>>>>>>>> nn=20
>>>>>>>>>> es per ShellExecute gestartet wurde.
>>>>>>>>>>
>>>>>>>>>> Da muss ja also dieser Shim gewirkt haben, sonst w=E4re ja kein Elevation=
>>>>>>>>>> =20
>>>>>>>>>> Prompt gekommen (das Programm braucht keine Admin Rechte).
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Dann hab ich das Programm mit VS2008 und dem Standardmanifest (also mit=20
>>>>>>>>>> AsInvoker) erstellt, und es kam kein Elevation Prompt, sondern alles=20
>>>>>>>>>> lief wie geschmiert.
>>>>>>>>>> Hab grad extra nochmal diffs angeguckt, und das Manifest war die einzige =
>>>>>>>>>>
>>>>>>>>>> =C4nderung!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Ich hab die Shims bisher als Kompatibilit=E4tskr=FCcke f=FCr alte Anwendu=
>>>>>>>>>> ngen=20
>>>>>>>>>> verstanden.
>>>>>>>>>> Wenn ich ein Programm mit VS2005/08 erstelle, und ein Manifest dabei=20
>>>>>>>>>> habe, kenn ich ja die Anforderungen von (zumindest) Vista schon, und=20
>>>>>>>>>> brauch diese Kr=FCcke daf=FCr nicht.
>>>>>>>>>>
>>>>>>>>>> Du hast dich sicher mehr mit dem Thema besch=E4ftigt als ich, aber wieso =
>>>>>>>>>>
>>>>>>>>>> reichte bei meinem Beispiel oben dann ein Manifest hinzuzuf=FCgen aus?
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --=20
>>>>>>>>>> lg
>>>>>>>>>> stefan binder


>>>>>>>>>>> On Monday, February 22, 2010 5:15 AM Jochen Kalmbach [MVP] wrote:

>>>>>>>>>>> Hallo Stefan!
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Ja... es gibt wohl sowas... aber ich konnte noch keine Doku oder sontwas
>>>>>>>>>>> finden, wo dies definiert wird...
>>>>>>>>>>> Bzw. in den Shims konnte ich noch keinen Eintrag ausmachen der auf die
>>>>>>>>>>> Manifeste achetet... aber man lernt ja immer wieder dazu...
>>>>>>>>>>> Siehe auch:
>>>>>>>>>>> http://blog.kalmbach-software.de/2010/02/22/the-shim-database/
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> So kann man es sehen... aber man kann sie auch f?r neue Anwendungen
>>>>>>>>>>> verwenden... sonst w?rde es ja auch kein Sinn machen, da die neuen
>>>>>>>>>>> Anwendungen bald ja alt sind ;)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Das frag ich mich ja auch ;)
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Greetings
>>>>>>>>>>> Jochen
>>>>>>>>>>>
>>>>>>>>>>> My blog about Win32 and .NET
>>>>>>>>>>> http://blog.kalmbachnet.de/


>>>>>>>>>>>> On Monday, February 22, 2010 5:24 AM Jochen Kalmbach [MVP] wrote:

>>>>>>>>>>>> Hallo Stefan!
>>>>>>>>>>>>
>>>>>>>>>>>> PS: Das Verhalten ist bei mir so:
>>>>>>>>>>>>
>>>>>>>>>>>> TestInstaller.exe: Ohne Manifeste
>>>>>>>>>>>> => UAC-prompt
>>>>>>>>>>>> => Installer-Dialog (wurde richtig installiert?)
>>>>>>>>>>>>
>>>>>>>>>>>> TestInstaller.exe: Mit Manifeste und "requireAdministrator"
>>>>>>>>>>>> => UAC-prompt
>>>>>>>>>>>> => Installer-Dialog (wurde richtig installiert?)
>>>>>>>>>>>>
>>>>>>>>>>>> TestInstaller.exe: Mit Manifeste und "asInvoker"
>>>>>>>>>>>> => Installer-Dialog (wurde richtig installiert?)
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Der "Installer-Dialog" lies sich bei mir nie unterdr?cken... die Frage
>>>>>>>>>>>> ist nur, wie kommt dieser Zustande... sind es die Shims oder etwas
>>>>>>>>>>>> anderes....
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Greetings
>>>>>>>>>>>> Jochen
>>>>>>>>>>>>
>>>>>>>>>>>> My blog about Win32 and .NET
>>>>>>>>>>>> http://blog.kalmbachnet.de/


>>>>>>>>>>>>> On Monday, February 22, 2010 5:31 AM Sven Hansen wrote:

>>>>>>>>>>>>> Hallo Stefan,
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Habe ich natürlich. Damit hatte das nichts zu tun. Das Programm arbeitete ja
>>>>>>>>>>>>> auch einwandfrei. Bis auf den Hinweis nach der Ausführung.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Nebenbeibemerkt:
>>>>>>>>>>>>> Obwohl ich gestehen muss gerade erst mit VC2008 anzufangen und den
>>>>>>>>>>>>> Klassenassistenten sehr vermisse. Das Hauptprogramm wurde mit VC6.0
>>>>>>>>>>>>> geschrieben wegen Streik gegen Dot-Net :-)
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Wahrscheinlich wie Martin sagte, wenn unter "uninstall" kein Eintrag in der
>>>>>>>>>>>>> Registry erfolgt.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Gruß
>>>>>>>>>>>>> Sven


>>>>>>>>>>>>>> On Monday, February 22, 2010 6:55 AM Stefan Binder wrote:

>>>>>>>>>>>>>> Hallo Jochen!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> e
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Dieser Dialog kam bei meiner App wiederum nie (also weder mit noch ohne=20
>>>>>>>>>>>>>> Manifest) :)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Ist aber wirklich ne minimal Anwendung, die als Aufrufparameter Files=20
>>>>>>>>>>>>>> bekommt, die es kopieren soll, und vorher pr=FCft ob diese noch offen sin=
>>>>>>>>>>>>>> d.
>>>>>>>>>>>>>> Falls sie offen sind, wird per Dialog aufgefordert sie zu schlie=DFen.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Das war schon alles was die "Anwendung" macht.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --=20
>>>>>>>>>>>>>> lg
>>>>>>>>>>>>>> stefan binder


>>>>>>>>>>>>>>> On Monday, February 22, 2010 7:47 AM Stefan Kuhr wrote:

>>>>>>>>>>>>>>> Hallo beisammen,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 2/22/2010 11:02 AM, Stefan Binder wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Ja, das habe ich auch beobachtet, das kann ich bestaetigen. Bei uns ist
>>>>>>>>>>>>>>> "install" im Produktnamen und daher war dieser String Teil der
>>>>>>>>>>>>>>> Versionsinforessource. Die Folge war, dass unter Windows 7, zumindest
>>>>>>>>>>>>>>> einem RC davon (mit Windows 7 RTM habe ich das noch nicht getestet),
>>>>>>>>>>>>>>> immer die Rueckfrage kam nach Beenden des Programms, ob die Installation
>>>>>>>>>>>>>>> erfolgreich durchgelaufen ist. Die Binaries hatten Manifeste und nur mit
>>>>>>>>>>>>>>> Ausschliessen der Binaries aus den Shims liess sich das nervige
>>>>>>>>>>>>>>> Rueckfragen abstellen. Ich werde irgendwann mal demnaechst testen, ob
>>>>>>>>>>>>>>> das mit dem RTM auch so ist.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> S


>>>>>>>>>>>>>>>> On Monday, February 22, 2010 8:00 AM Jochen Kalmbach [MVP] wrote:

>>>>>>>>>>>>>>>> Hallo Stefan!
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Kannst Du mir kurz verraten, WIE Du das gemacht hast?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>> Greetings
>>>>>>>>>>>>>>>> Jochen
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> My blog about Win32 and .NET
>>>>>>>>>>>>>>>> http://blog.kalmbachnet.de/


>>>>>>>>>>>>>>>>> On Monday, February 22, 2010 8:03 AM Martin Richter [MVP] wrote:

>>>>>>>>>>>>>>>>> Hallo Stefan!
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Ich bekomme solch einen Prompt auch nicht. Mein Programm hei?t
>>>>>>>>>>>>>>>>> Setup<productname>Client.exe
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> RequireAdmin Manifest und das wwar es. Es werden einige DLLs kopiert
>>>>>>>>>>>>>>>>> (falls n?tig) und einige ActiveX Komponenten registriert.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> Martin Richter [MVP] WWJD http://blog.m-ri.de
>>>>>>>>>>>>>>>>> "A well-written program is its own heaven; a poorly written
>>>>>>>>>>>>>>>>> program is its own hell!" The Tao of Programming
>>>>>>>>>>>>>>>>> FAQ: http://www.mpdvc.de Samples: http://www.codeproject.com


>>>>>>>>>>>>>>>>>> On Monday, February 22, 2010 8:05 AM Stefan Kuhr wrote:

>>>>>>>>>>>>>>>>>> Hi Jochen,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On 2/22/2010 2:00 PM, Jochen Kalmbach [MVP] wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Einfuegen des Pfads zur Exedatei unter
>>>>>>>>>>>>>>>>>> HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows
>>>>>>>>>>>>>>>>>> NT\\CurrentVersion\\\\AppCompatFlags\\Compatibility Assistant in den
>>>>>>>>>>>>>>>>>> MultiSZ-Value "ExecutablestoExclude".
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>> S


>>>>>>>>>>>>>>>>>>> On Monday, February 22, 2010 8:11 AM Jochen Kalmbach [MVP] wrote:

>>>>>>>>>>>>>>>>>>> Hallo Martin!
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Habe es gerade mit einem simplen Consolen-Programm probiert:
>>>>>>>>>>>>>>>>>>> Also nur printf und mit requireAdministrator-Manifest:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Exe-Name: SetupTest.exe
>>>>>>>>>>>>>>>>>>> => Installer-Dialog kommt nach beenden des Programms...
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> OS: Win7-x64; Programm ist x86
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>> Greetings
>>>>>>>>>>>>>>>>>>> Jochen
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> My blog about Win32 and .NET
>>>>>>>>>>>>>>>>>>> http://blog.kalmbachnet.de/


>>>>>>>>>>>>>>>>>>>>> On Monday, February 22, 2010 8:20 AM Jochen Kalmbach [MVP] wrote:

>>>>>>>>>>>>>>>>>>>>> Hallo Stefan!
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> Ja, jetzt f?llt es mir wieder ein...
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>> Greetings
>>>>>>>>>>>>>>>>>>>>> Jochen
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> My blog about Win32 and .NET
>>>>>>>>>>>>>>>>>>>>> http://blog.kalmbachnet.de/


>>>>>>>>>>>>>>>>>>>>>> On Monday, February 22, 2010 8:24 AM Jochen Kalmbach [MVP] wrote:

>>>>>>>>>>>>>>>>>>>>>> Hallo Sven!
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Hier steht ?brigens etwas ?ber das Feature:
>>>>>>>>>>>>>>>>>>>>>> http://msdn.microsoft.com/en-us/library/bb756937.aspx
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> <quote>
>>>>>>>>>>>>>>>>>>>>>> It monitors a program detected as setup by Windows Vista and Windows
>>>>>>>>>>>>>>>>>>>>>> Server 2008 and checks whether the program registers an entry in Add or
>>>>>>>>>>>>>>>>>>>>>> Remove Programs (ARP). If no entries are created in ARP, PCA concludes
>>>>>>>>>>>>>>>>>>>>>> that the installer did not complete successfully. It will then wait for
>>>>>>>>>>>>>>>>>>>>>> the install program to terminate before displaying the UI. If it is an
>>>>>>>>>>>>>>>>>>>>>> uninstaller, the detection looks for whether an entry was deleted from ARP.
>>>>>>>>>>>>>>>>>>>>>> </quote>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>> Greetings
>>>>>>>>>>>>>>>>>>>>>> Jochen
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> My blog about Win32 and .NET
>>>>>>>>>>>>>>>>>>>>>> http://blog.kalmbachnet.de/


Timo Boehme

unread,
Feb 28, 2012, 3:32:46 AM2/28/12
to
>>>>>>>>>>>>>>> Ja, das habe ich auch beobachtet, das kann ich bestaetigen. Bei uns ist
>>>>>>>>>>>>>>> "install" im Produktnamen und daher war dieser String Teil der
>>>>>>>>>>>>>>> Versionsinforessource. Die Folge war, dass unter Windows 7, zumindest
>>>>>>>>>>>>>>> einem RC davon (mit Windows 7 RTM habe ich das noch nicht getestet),
>>>>>>>>>>>>>>> immer die Rueckfrage kam nach Beenden des Programms, ob die Installation
>>>>>>>>>>>>>>> erfolgreich durchgelaufen ist. Die Binaries hatten Manifeste und nur mit
>>>>>>>>>>>>>>> Ausschliessen der Binaries aus den Shims liess sich das nervige
>>>>>>>>>>>>>>> Rueckfragen abstellen. Ich werde irgendwann mal demnaechst testen, ob
>>>>>>>>>>>>>>> das mit dem RTM auch so ist.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> On Tuesday, February 28, 2012 3:31 AM Timo Boehme wrote:

>>>>>>>>>>>>>>>>>>>>>>>> Quick and dirty solution für meine VB6 Anwendung. Sie heisst: NetSetup und installiert das DotNet Framework :-)

Timo Boehme

unread,
Feb 28, 2012, 3:35:11 AM2/28/12
to
Quick and dirty solution f?r meine VB6 Anwendung. Sie heisst: NetSetup und installiert das DotNet Framework :-)

If StartService = True Then'Wenn meine Application Beendet wird
Res = ShellExecute(0, "OPEN", "Net", "Start PcaSvc", ApPath, ShowFlag)
Else'Bei Applikations-Start
0 new messages