autorun code for metro application

Monkey Forums/Monkey Programming/autorun code for metro application

hsutuo(Posted 2013) [#1]
//auto install..
Execute "powershell Set-ExecutionPolicy unrestricted"

Local currentdir$=CurrentDir()
Local guid$=GetCfgVar( "PROJECT_GUID" )
Local cnid$=GetCfgVar( "PROJECT_PUBLISHER_ID" )

if platform.ToLower() = "win32" Then
    platform = "x86"
Endif

If CASED_CONFIG.ToLower() = "debug" Then
	currentdir = currentdir + "/AppPackages/monkey/monkey_1.0.0.0_" + platform + "_Debug_Test/Add-AppDevPackage.ps1"
Else
	currentdir = currentdir + "/AppPackages/monkey/monkey_1.0.0.0_" + platform + "_Test/Add-AppDevPackage.ps1"
Endif

'first try uninstall 
local uninstall$ = guid + "_1.0.0.0_" + platform + "__" + cnid
Execute "powershell get-appxpackage > installpakcage.txt"
			
local list$ = LoadString("installpakcage.txt")
local i = list.Find( guid + "_", 0 )
if ( i <> -1 ) then 
local p = list.Find( "__", i )
if ( p <> -1 ) then 
	' found
	local result$ = list[i..p]
	Execute "powershell remove-appxpackage " + result + "__" + cnid, False
endif
endif

DeleteFile( "installpakcage.txt")			
Execute "powershell " + currentdir + " -force"

Local cmd$ = guid + "_" + cnid + "!App"
Execute ROOTDIR + "/WinStoreBootup " + cmd,False


//WinStoreBootup code
// Win32 Console project...
#include "stdafx.h"
#include <shlobj.h>
#include <stdio.h>
#include <shobjidl.h>
#include <objbase.h>
#include <atlbase.h>
#include <string>

HRESULT LaunchApp(const std::wstring& strAppUserModelId, PDWORD pdwProcessId)
{
    CComPtr<IApplicationActivationManager> spAppActivationManager;
    HRESULT hrResult = E_INVALIDARG;
    if (!strAppUserModelId.empty())
    {
        // Instantiate IApplicationActivationManager
        hrResult = CoCreateInstance(CLSID_ApplicationActivationManager,
            NULL,
            CLSCTX_LOCAL_SERVER,
            IID_IApplicationActivationManager,
            (LPVOID*)&spAppActivationManager);

        if (SUCCEEDED(hrResult))
        {
            // This call ensures that the app is launched as the foreground window
            hrResult = CoAllowSetForegroundWindow(spAppActivationManager, NULL);
            
            // Launch the app
            if (SUCCEEDED(hrResult))
            {
                hrResult = spAppActivationManager->ActivateApplication(strAppUserModelId.c_str(),
                    NULL,
                    AO_NONE,
                    pdwProcessId);
            }
        }
    }

    return hrResult;
}

int _tmain(int argc, _TCHAR* argv[])
{
    HRESULT hrResult = S_OK;
    if (SUCCEEDED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED)))
    {
        if (argc == 2)
        {
            DWORD dwProcessId = 0;
            ++argv;
            hrResult = LaunchApp(*argv, &dwProcessId);
        }
        else
        {
            hrResult = E_INVALIDARG;
        }

        CoUninitialize();
    }

    return hrResult;
}