在UWP应用程序中运行MSI文件

时间:2017-02-03 14:45:35

标签: windows-store-apps win-universal-app

我有一个UWP应用程序,因为我需要在按钮单击上运行MSI文件。 我不认为UWP会支持“process.start(filename)”。 UWP有可能实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

UWP无法打开MSI。

但是uwp可以打开其他类型的文件。

您可以使用Launcher。

  1. 选择您想要运行的msi。

  2. 通过启动器文件运行msi。

  3. 结果总是失败。

    export default class AutosList extends React.Component {
    
        constructor () {
            super();
            this.state = {
                data: []
            }
        }
    
        componentWillMount () {
            let data = axios.get('http://localhost:5000/autos')
            //
            data.then((res) => {
                this.setState({
                    data: res.data
                });
            })
        }
    
        render () {
            const { data } = this.state // => const data = this.state.data
            return (
                <div>
                    <header>
                        <h1>Autos page</h1>
                    </header>
                    <div>
                        {
                            this.state.data.map((item, i) => <Auto key={i} auto={item}/>)
                        }
                    </div>
                    <script dangerouslySetInnerHTML={ { __html: 'window.PROPS=' + JSON.stringify(data) } }/>
                </div>
            );
        }
    }
    
  4. 但是你会看到结果是假的,因为private async void ButtonBase_OnClick(object sender, RoutedEventArgs e) { //pick msi file FileOpenPicker pick = new FileOpenPicker(); pick.FileTypeFilter.Add(".msi"); StorageFile file = await pick.PickSingleFileAsync(); //run bool result = await Launcher.LaunchFileAsync(file); if (result) { //success } }

    您可以打开该文件夹并使用它来单击msi文件。代码为:

    Many file types that contain executable code, for example .exe, .msi, and .js files, are blocked from launching

    请参阅:Windows Store App running .msi installer

    https://msdn.microsoft.com/en-us/library/windows/apps/hh701471.aspx?f=255&MSPPError=-2147217396