Skip to content
⌘ NSIS Forum Archive

Invalid command: UAC::RunElevated

13 posts

pbeisel#

Invalid command: UAC::RunElevated

when i compile my script i get:

Invalid command: UAC::RunElevated

UAC.dll is in my plugin's directory, but i am not sure its it loading properly:

in the installer output i see:

Processing plugin dlls
many individual lines are listed
e.g.
BgImage::Clear
BgImage::Sound

but for UAC I have:

UAC::_

does UAC::_ mean its collecting all functions or does this indicate a problem?
pbeisel#
assuming UAC::_ is not indicating a problem ...
i also verified that UAC.nsh is loaded correctly

(tried the .dll from the current branch as well as experimental, tried both the "A" and "U" versions... same result)
pbeisel#
well i got it to compile by changing:

UAC::RunEvevated

with

!insertmacro UAC_RunElevated

is this correct?
pbeisel#
UAC::ExecCodeSegment

same problem for UAC::ExecCodeSegment?

is there a macro i should use in its place?
Anders#
Yes, all exports have been renamed to _. UAC_AsUser_Call is the basic replacement macro (With more specific versions like UAC_AsUser_ExecShell)
pbeisel#
I'm sorry I don't understand:

what specifically do I substitute for UAC::ExecCodeSegment as in the code example:

GetFunctionAddress $0 CreateShortcuts
UAC::ExecCodeSegment $0
MSG#
You cannot call UAC::Whatever directly anymore. You have to use the macros in UAC.nsh. For the case of ExecCodeSegment, you'll probably need something like
!insertmacro UAC_AsUser_Call function YourFunc ${UAC_SYNCREGISTERS}|${UAC_SYNCINSTDIR}
pbeisel#
so I assume you mean:

!insertmacro UAC_AsUser_Call ExecCodeSegment CreateShortcuts ${UAC_SYNCREGISTERS}|${UAC_SYNCINSTDIR}

so with that i get:

!insertmacro: UAC_AsUser_Call
Push: $0
Invalid command: GetExecCodeSegmentAddress
Error in macro UAC_AsUser_Call on macroline 2
MSG#
I cannot find 'GetExecCodeSegmentAddress' in any of the recent UAC.nsh versions. You're probably using an out-of-date version.
pbeisel#
ok i think you meant literally:

!insertmacro UAC_AsUser_Call function CreateShortcuts ${UAC_SYNCREGISTERS}|${UAC_SYNCINSTDIR}

correct?

if so, what does:

${UAC_SYNCREGISTERS}|${UAC_SYNCINSTDIR}

mean?

could someone update http://nsis.sourceforge.net/UAC_plug-in so the examples map to the current code reality?

thanks.
MSG#
Syncregisters and syncinstdir do exactly what they sound like: they synchronize the registers (registers are the NSIS standard variables $0, $1, etc) and the instdir variable. And if you're wondering 'Synchronize between what?', I would suggest you stop trying to use the UAC plugin...

As for code examples, there are several nsi example files in the zip.